2011-02-07 13 views
0

私はAndroidでグラフを描こうとしています。グラフを現在の画面サイズに拡大したいので、定数で明示的に設定するのではなく、グラフを格納することを意図したLinearLayoutのサイズを取得します。しかし、アクティビティのonCreate()でサイズを取得できないという問題があります。したがって、オーバーライドされたonSizeChanged()のカスタムLinearLayoutを使用します。グラフを描くと、結果の画像が見えません

view class="com.nnevod.loggraph.graph$GraphDisplayLayout" 
    android:layout_height="fill_parent" 
    android:id="@+id/linearLayout1" 
    android:layout_width="fill_parent" 
    android:layout_weight="1" 
    android:background="@color/White" 

ここでは角括弧を省略しています。

オーバーレイされたo nSizeChanged()では、ビューの寸法が読み取られ、多くのグラフの例で説明されているようにすべてが行われます。ビットマップが作成され、グラフ描画クラスに渡され、ImageViewが作成されます。ビットマップに変換され、カスタムのLinearLayoutに追加されます。

問題は、グラフの画像が表示されないことです。しかし、HierarchyViewerで検査しようとすると、イメージが表示されます。 onSizeChanged()のコードをアクティビティのonCreate()に切り取って貼り付けた場合、測定された寸法ではなく既定の寸法が使用されますが、すべてがうまく表示されます。

私の質問は間違っているのですか?私はカスタムonSizeChanged()で間違ったコンテキストを使用しているか、そこからビューを更新することができないと仮定していました。測定された寸法を何らかの形でアクティビティに渡して、ビットマップの添付ファイルをアクティビティのメソッドの コンテキストの部分では、アクティビティーのコンテキストの使用を含め、使用可能なすべてのコンテキストを無駄に使用しようとしましたが、

必要に応じて、より多くのコードを提供します。

答えて

1

私は同じような問題を一度も経験していました。階層ビューアの機能はrequestLayout()です。だから、私はおそらくどこかでそれを呼ぶのを忘れていたと言われましたが、私はそうは思わなかったのです。後で、同様の状況がバグとして報告され、requestLayout()をどこかで呼び出す方法を見つける回避策であることがわかりました。

実際にはいくつかの条件では(ランダムなビューを追加したり、図面を更新したりして)実際に機能していたので変でした。とにかく、最後に私は必要なものを直接描画したカスタムビューを作成することをお勧めしました(onMeasureの後に描画が行われるため、適応描画を作成する際に問題はありません)。

(面白いことは、グラフについて再びです!)

参照(1)(2)

関連する問題