我有一个应用程序,以图形方式显示一些数据。它创建两个视图来绘制图形并将它们添加到我的布局中。每个视图以不同的方式显示数据,但每个视图实现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;第二个onSizeChanged()的高度为0,这将导致createBitmap()失败。如果我颠倒了上述调用的顺序,那么graphview1将以这种方式失败。我希望每个位图有大约一半的面积。
提前感谢你解释发生了什么事!
最佳答案
如果不知道图形视图和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));
这将告诉线性布局来安排您的视图,以便它们平均划分它们之间的水平空间。