3

我正在尝试向活动添加一个静态条形图,但它覆盖了整个屏幕。我正在使用的代码如下 -

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>

我哪里错了?有什么建议么

4

1 回答 1

2

当您调用setContentView()指定视图的布局参数时,将被忽略,并设置为默认值MATCH_PARENT,因此在您的代码中setContentView(bc)会导致您的 BarChart 填满整个屏幕。

一种解决方案是将静态 BarChart 视图放在 ViewGroup 下,例如LinearLayout在 activity_main.xml 中,然后调用setContentView(R.layout.activity_main).

编辑:

另一件事,在您的代码中,您通过执行以下操作获得了 xml 中定义的 BarChart:

BarChart bc = (BarChart) findViewById(R.id.chart);

这是正确的......但稍后在您的代码中,您通过分配bc给您实例化的另一个 BarChart 使上述行变得毫无意义:

bc=new BarChart(this);

所以,删除这条线,你应该能够看到你的 BarChart。

于 2015-03-19T17:59:24.130 回答