在ListViewMultiChartActivity中绘制额外的上限/下限

时间:2019-01-22 02:52:41

标签: android mpandroidchart

我已下载MPAndroidChart示例以进行一些更改,因此我决定进行更改 ListViewMultiChartActivity和LineChartItem中,我添加了上限/下限并运行应用程序,并且它正在运行,但是当我向下滚动时,在linechart中添加了我未创建的其他上限/下限,这很奇怪。我添加了一些图片和代码

我正在使用Android Studio和Android 8.0 API 26和mpandroidchart 3.1.0-alpha 仅当我向下滚动时会发生这种情况,但如果我向下滚动则不会发生。我看到的问题是上限/下限属于另一条线图,并且在一个图中重叠。

https://user-images.githubusercontent.com/34872326/50542025-3ede8280-0b80-11e9-9463-1153a26caa0d.jpg

https://user-images.githubusercontent.com/34872326/50542022-3e45ec00-0b80-11e9-9c75-d9f15634bac4.jpg

holder.chart.getDescription().setEnabled(false);
holder.chart.setDrawGridBackground(false);

XAxis xAxis = holder.chart.getXAxis();
xAxis.setPosition(XAxisPosition.BOTTOM);
xAxis.setTypeface(mTf);
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(true);

YAxis leftAxis = holder.chart.getAxisLeft();
leftAxis.setTypeface(mTf);
leftAxis.setLabelCount(5, false);
leftAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)

YAxis rightAxis = holder.chart.getAxisRight();
rightAxis.setTypeface(mTf);
rightAxis.setLabelCount(5, false);
rightAxis.setDrawGridLines(false);
rightAxis.setAxisMinimum(0f); // this replaces setStartAtZero(true)


LimitLine upper_limit = new LimitLine(mChartData.getYMax(), "Max Value");
upper_limit.setLineWidth(2f);
upper_limit.enableDashedLine(10f, 10f, 0f);
upper_limit.setLabelPosition(LimitLine.LimitLabelPosition.RIGHT_TOP);
upper_limit.setTextSize(10f);


LimitLine lower_limit = new LimitLine(mChartData.getYMin(), "Min Value");
lower_limit.setLineWidth(2f);
lower_limit.enableDashedLine(10f, 10f, 0f);
lower_limit.setLabelPosition(LimitLine.LimitLabelPosition.RIGHT_BOTTOM);
lower_limit.setTextSize(10f);

leftAxis.addLimitLine(upper_limit);
leftAxis.addLimitLine(lower_limit);
leftAxis.setDrawLimitLinesBehindData(true);



// set data
holder.chart.setData((LineData) mChartData);

// do not forget to refresh the chart
// holder.chart.invalidate();
holder.chart.animateX(750);

return convertView;

1 个答案:

答案 0 :(得分:0)

我找到了答案。我需要把leftAxis.removeAllLimitLines();在添加限制之前,因为该行代码可以防止限制重叠–