我正在尝试向活动添加静态BarChart,但它覆盖整个屏幕。我使用的代码如下 -
MainActivity.java
BarChart bc = (BarChart) findViewById(R.id.chart);
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(4f, 0));
entries.add(new BarEntry(8f, 1));
entries.add(new BarEntry(6f, 2));
entries.add(new BarEntry(12f, 3));
entries.add(new BarEntry(18f, 4));
entries.add(new BarEntry(9f, 5));
entries.add(new BarEntry(12f, 6));
entries.add(new BarEntry(10f, 7));
BarDataSet dataset = new BarDataSet(entries, "# of Calls");
ArrayList<String> labels = new ArrayList<String>();
labels.add("January");
labels.add("February");
labels.add("March");
labels.add("April");
labels.add("May");
labels.add("June");
labels.add("July");
labels.add("August");
bc=new BarChart(this);
BarData data = new BarData(labels, dataset);
setContentView(bc);
bc.setData(data);
MainActivity.xml
<com.github.mikephil.charting.charts.BarChart
android:layout_width="200dp"
android:layout_height="200dp"
android:id="@+id/chart"
android:layout_below="@+id/textView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="62dp">
</com.github.mikephil.charting.charts.BarChart>
我哪里错了? 任何建议
答案 0 :(得分:2)
当您致电setContentView()
时,系统会忽略指定视图的布局参数,并设置为默认MATCH_PARENT
,因此代码setContentView(bc)
会导致您的BarChart填满整个屏幕
一种解决方案是将静态BarChart视图放在activityGroup的ViewGroup下,如LinearLayout
,并调用setContentView(R.layout.activity_main)
。
编辑:
另一件事,在您的代码中,您通过执行以下操作获得了在xml中定义的BarChart:
BarChart bc = (BarChart) findViewById(R.id.chart);
哪个是正确的...但是稍后在您的代码中,您通过将bc
分配给您实例化的另一个BarChart,使上述行毫无意义:
bc=new BarChart(this);
因此,删除此行,您应该能够看到您的BarChart。