2011-02-02 85 views
3

我有一個應用程序,它以圖形方式顯示一些數據。它創建兩個視圖來繪製圖形並將它們添加到我的佈局中。每個視圖顯示了數據不同的方式,但每個View實現onSizeChanged()相同:秒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; 得到0的高度,這導致createBitmap()失敗。如果我顛倒了上述調用的順序,那麼graphView1會以這種方式失敗。我希望每個位圖都有大約一半的面積。

在此先感謝您解釋發生了什麼!

回答

0

如果不知道關於您的圖形視圖和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來安排您的意見,使他們平分自己之間的水平空間。