MPAndroidChart 自定义 X 轴、Y 轴标签,v3.1.0 如何避坑。
2021-07-23 15:45:47
错误版本:😫😫
项目需求自定义一下 MPAndroidChart X 轴标签,寻寻觅觅,找到的都是 老版本的错误代码(反正我模仿了一下写法,使用 3.1.0 情况下,均报错,即使 install 后,也打不开相应的 Activity),他们代码基本一致,如下所示:(以 x 轴为例)
// 先是 定义 一个 xLabel ArrayList,用它来存放标签信息。
final ArrayList<String> xLabel = new ArrayList<>();
xLabel.add("9");
xLabel.add("15");
xLabel.add("21");
xLabel.add("27");
xLabel.add("33");
// or use some other logic to save your data in list. For ex.
for(i=1; i<50; i+=2)
{
xLabel.add(""+3*i);
}
// 然后使用 IAxisValueFormatter 这个接口来实现。
XAxis xAxis = mChart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setDrawGridLines(false);
xAxis.setValueFormatter(new IAxisValueFormatter() {
@Override
public String getFormattedValue(float value,AxisBase axis) {
return xLabel.get((int)value);
}
});
这样写有大问题嗷!在 Android Studio 中报错了!👇
你看你看,👇,人家想要 ValueFormatter
,你给人家 IAxisValueFormatter
,能对了才怪了!
我苦苦寻觅,没有找到现成的代码,于是,于是,我只能被迫无奈,先自己改改看,既然他需要 ValueFormatter
,那我就先给它 new
一个,整一个起码看起来对的。
诶?这时候你发现,虽然我 new
对了,但是出现了这种情况:
气煞我也!你要这个,我 get
这个还不行?那叔叔我呐,就要看源码了!鼠标移到这里👇,滚轮点进去!
在源码的 ValueFormatter.java 中,苦苦寻觅~找到了这个,一看,这个就和前面那个参数一样,在看一下开发人员给的方法描述,好家伙,就它了!接下来,我就在这个基础上修改啦!
解决办法:😎😎😎
- 先给 标签弄个 String 类型的数组,因为啥?你 der 啊,看上面那个图,人家是不是要 String 类型的返回值?
final String[] xLabels = new String[dataFFT.length];
/**
* xLabels 的内容你自己加,我不管了嗷
* */
- 获取你的
XAxis
,再设置标签。
XAxis xAxis = chart.getXAxis();
xAxis.setValueFormatter(new ValueFormatter() { //X轴自定义标签内容
@Override
public String getAxisLabel(float index, AxisBase axisBase) {
return xLabels[(int)index];
}
});
如果你想改 Y 轴:可以参考一下这篇MPAndroidChart的详细使用——BarChart条形图(二),几乎和 X 轴自定义一模一样,但是注意一下,这篇博文里用的也是错误的代码😣😣。
但是!聪明的你肯定会学以致用,使用上面这种方法吧?!😏😏
OK,打完收工!🤩🤩