如何设置MPAndroidChart条形图的高度和宽度?
我试图在活动中添加一个静态条形图,但它覆盖了整个屏幕。下面是我正在使用的代码- MainActivity.java如何设置MPAndroidChart条形图的高度和宽度?,android,height,width,bar-chart,mpandroidchart,Android,Height,Width,Bar Chart,Mpandroidchart,我试图在活动中添加一个静态条形图,但它覆盖了整个屏幕。下面是我正在使用的代码- 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)
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);
BarChart bc=(BarChart)findviewbyd(R.id.chart);
ArrayList条目=新的ArrayList();
新增(新巴伦特里(4f,0));
增加(新巴伦特里(8f,1));
增加(新巴伦特里(6f,2));
增加(新巴伦特里(12f,3));
增加(新巴伦特里(18f,4));
增加(新巴伦特里(9f,5));
增加(新巴伦特里(12f,6));
增加(新巴伦特里(10f,7));
BarDataSet数据集=新的BarDataSet(调用项“#”);
ArrayList标签=新的ArrayList();
标签。添加(“一月”);
标签。添加(“二月”);
标签。添加(“三月”);
标签。添加(“四月”);
标签。添加(“可能”);
标签。添加(“六月”);
标签。添加(“七月”);
标签。添加(“八月”);
bc=新条形图(本);
BarData数据=新的BarData(标签、数据集);
setContentView(bc);
bc.setData(数据);
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>
我错在哪里?
调用
setContentView()
时,将忽略指定视图的布局参数,并将其设置为默认的MATCH\u PARENT
,因此在代码中setContentView(bc)
将使条形图填满整个屏幕
一种解决方案是将静态条形图视图放置在activity_main.xml中的视图组下,如LinearLayout
,然后调用setContentView(R.layout.activity_main)
编辑:
另一件事,在代码中,您通过以下操作获得了xml中定义的条形图:
BarChart bc = (BarChart) findViewById(R.id.chart);
这是正确的。。。但稍后在代码中,通过将bc
指定给实例化的另一个条形图,使上述行变得毫无意义:
bc=new BarChart(this);
因此,删除这一行,您应该能够看到您的条形图。我已经在使用
setContentView(R.layout.activity\u main)
还对xml进行了更改,将图表添加到LinearLayout
,另一个setContentView(bc)代码>用于设置图表内容,您的方法无效,图表不显示。当我删除bc=新条形图(此)时出现此错误代码>java.lang.IllegalStateException:指定的子级已具有父级。必须首先对子级的父级调用removeView()。之后,我介绍了新的条形图条形图abc;addView(abc=新条形图(MainActivity.this));abc.setData(数据)代码>对我来说效果很好。听起来你仍然在做setContentView(bc)
。很高兴你最终成功了:)不,我没有使用setContentView(bc)
使用addView()
。是的,它在工作,但我不知道这是正确的程序与否。