Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置MPAndroidChart条形图的高度和宽度?_Android_Height_Width_Bar Chart_Mpandroidchart - Fatal编程技术网

如何设置MPAndroidChart条形图的高度和宽度?

如何设置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)

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

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);
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()
。是的,它在工作,但我不知道这是正确的程序与否。