2011-02-02 4 views
3

私はいくつかのデータをグラフィカルに表示するアプリを持っています。グラフィックを描画する2つのビューを作成し、それらをレイアウトに追加します。各ビューには、データは異なる方法を示していますが、各ビューはonSizeChanged()同じ実装しています:ビューは以下のようなものを呼び出されsecond onSizeChangedはゼロの高さを取得します

 protected void onSizeChanged(int curw, int curh, int oldw, int oldh) { 
     if (bitmap2 != null) { 
      bitmap2.recycle(); 
     } 
     canvas2= new Canvas(); 
     bitmap2 = Bitmap.createBitmap(curw, curh, Bitmap.Config.ARGB_8888); 
     canvas2.setBitmap(bitmap2); 
    } 

:常に

 LinearLayout myLayout = (LinearLayout)findViewById(R.id.revlay); 

     GraphView1 graphView1 = new GraphView1(this, theEventArrayList); 
     myLayout.addView(graphView1); 

     GraphView2 graphView2 = new GraphView2(this, theEventArrayList); 
     myLayout.addView(graphView2); 

最初onSizeChangedを()をその呼び出されると、高さが652、幅が480になります。 第2のが0の高さを取得すると、createBitmap()が失敗します。上記の呼び出しの順序を逆にすると、graphView1はそのように失敗します。私はそれぞれのビットマップが約半分の領域を持つようにしたいと思います。

おかげさまで、何が起こっているか説明してくれてありがとう!

答えて

0

あなたのgraphviewsとLinearLayoutのレイアウトパラメータに関する詳細な実装の詳細を知らなくても、あなたの質問に答えにくいです。 しかし、あなたのLinearLayoutが水平方向性を持っていると仮定し、これを試してみてください。

GraphView1 graphView1 = new GraphView1(this, theEventArrayList); 
GraphView2 graphView2 = new GraphView2(this, theEventArrayList); 
myLayout.addView(graphView2, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)); 
myLayout.addView(graphView1, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)); 

これは、彼らが同じように自分自身との間の水平方向のスペースを分割するようにあなたの意見を配置するのLinearLayoutを教えてくれます。

関連する問題