我有一个以图形方式显示一些数据的应用。它创建了两个用于绘制图形的视图,并将它们添加到我的布局中。每个视图以不同的方式显示数据,但每个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就会失败。我希望每个位图占据一半的面积。
提前感谢您解释发生了什么!
答案 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安排你的视图,以便它们在它们之间平均划分水平空间。