第二个onSizeChanged获得零高度

时间:2011-02-02 14:54:57

标签: android graphics

我有一个以图形方式显示一些数据的应用。它创建了两个用于绘制图形的视图,并将它们添加到我的布局中。每个视图以不同的方式显示数据,但每个View实现 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就会失败。我希望每个位图占据一半的面积。

提前感谢您解释发生了什么!

1 个答案:

答案 0 :(得分: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安排你的视图,以便它们在它们之间平均划分水平空间。