我正在开发一个android应用程序,并在其中使用MPAndroidChartlib。然而,应用程序是使用mpandroidchart版本2-0-8开发的。我的图表显示得很好,如下所示。
但是今天我更新了lib版本为2-1-1。我没有对代码做任何更改,但我的图表现在是这样的。
这是chart的xml代码。
<com.github.mikephil.charting.charts.PieChart
android:id="@+id/chart"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/top_bottomMarginForChart"
android:layout_marginLeft="@dimen/top_bottomMarginForChart"
android:layout_marginRight="30dp"
android:layout_marginBottom="@dimen/top_bottomMarginForChart" />
如果重要的话,我会在
CardView
上显示图表。我需要在代码中更新什么吗?我在网站上搜索了一下,但什么也没找到。
下面是图表的Java代码。
mChart = (PieChart) rootView.findViewById(R.id.chart);
mChart.setHoleColor(Color.WHITE);
mChart.setHoleRadius(40f);
mChart.setDescription("");
mChart.setDrawCenterText(true);
mChart.setDrawHoleEnabled(true);
mChart.setRotationAngle(0);
mChart.setDrawSliceText(false);
mChart.setRotationEnabled(true);
mChart.setUsePercentValues(true);
mChart.setTouchEnabled(false);
mChart.animateXY(1500, 1500);
传说
Legend l = mChart.getLegend();
l.setPosition(Legend.LegendPosition.RIGHT_OF_CHART_CENTER);
l.setXEntrySpace(10f);
l.setYEntrySpace(10f);
数据设置到图表
private void setData(int count, float range)
{
ArrayList<Entry> yVals1 = new ArrayList<Entry>();
for (int i = 0; i < count ; i++)
{
yVals1.add(new Entry(Total_Amount[i],i));
}
ArrayList<String> xVals = new ArrayList<String>();
for (int i = 0; i < count ; i++) {
xVals.add(Array1[i]);
}
PieDataSet set1 = new PieDataSet(yVals1, "");
set1.setSliceSpace(3f);
ArrayList<Integer> colors = new ArrayList<Integer>();
for (int i = 0; i < count ; i++) {
colors.add(Color.parseColor(ColorName[i]));
}
colors.add(ColorTemplate.getHoloBlue());
set1.setColors(colors);
PieData data = new PieData(xVals, set1);
data.setDrawValues(false);
mChart.setData(data);
mChart.highlightValues(null);
mChart.invalidate();
}
最佳答案
我不确定,但我发现只有当我将PieChart
高度设置为wrap_content
时,才会出现上述问题。
我通过硬编码不推荐的PieChart
高度来解决这个问题。如果有人有其他的解决方案,然后可以张贴它。