我正试图在一个屏幕上显示两个图形,但我无法做到。这是代码,我在onClick函数中显示一个图形:
case R.id.graphs:
GraphicalView mChartView = new Niveau().execute(this);
LinearLayout layout = (LinearLayout) findViewById(R.id.graph);
layout.removeAllViews();
layout.addView(mChartView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
break;
任何想法??
非常感谢!
答案 0 :(得分:1)
在添加第二个布局之前,您必须调用layout.removeAllViews();
,以便您的布局现在可以在其中显示另一个布局。因此,首先尝试删除,然后添加第二个布局。
答案 1 :(得分:1)
case R.id.graphs:
GraphicalView mChartView1 = new Niveau().execute(this);
GraphicalView mChartView2 = // another chartView creation
LinearLayout layout = (LinearLayout) findViewById(R.id.graph);
layout.removeAllViews();
layout.addView(mChartView1, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
layout.addView(mChartView2, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
break;
那应该有用。确保mChartView
上有不同的ID - 如果以编程方式创建它们而不是从XML布局中填充,则需要以编程方式设置id:
mChartView1.setId(1);
mChartView2.setId(2);
此外,RelativeLayout
可能会在布局和定位方面为您提供更多自定义。然后,您需要在布局参数中设置相对位置:
RelativeLayout layout = (RelativeLayout) findViewById(R.id.graph);
....
RelativeLayout.LayoutParams paramsForChart2 = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
paramsForChart2.addRule(RelativeLayout.RIGHT_OF, mChartView1.getId());
layout.addView(mChartView2, paramsForChart2);