【Android Studio】MPAndroidChart v3.1.0 自定义 X 轴、Y 轴标签ValueFormatter

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,能对了才怪了!
错误2
我苦苦寻觅,没有找到现成的代码,于是,于是,我只能被迫无奈,先自己改改看,既然他需要 ValueFormatter,那我就先给它 new 一个,整一个起码看起来对的。
看似对了
诶?这时候你发现,虽然我 new 对了,但是出现了这种情况:
错!
气煞我也!你要这个,我 get 这个还不行?那叔叔我呐,就要看源码了!鼠标移到这里👇,滚轮点进去!
在这里插入图片描述
在源码的 ValueFormatter.java 中,苦苦寻觅~找到了这个,一看,这个就和前面那个参数一样,在看一下开发人员给的方法描述,好家伙,就它了!接下来,我就在这个基础上修改啦!
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,打完收工!🤩🤩

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值