我是靠谱客的博主 温柔纸飞机,最近开发中收集的这篇文章主要介绍针对MPAndroidChart—3.0 X轴显示字符串类型文字的问题 以及一些bug 新人多多指教,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

先上几张图片  刚做出来的  数据都是真的 




折磨了我好久 尤其是

HorizontalBarChart 这个横向柱状图 X轴的字符串问题 找了好久  

百度  博客 外网都找了  基本要么就是直接拉给的api  要不然就是2.2版本 很少有3.0版本的 有的话也就是一些属性的了解   还有就是根本没有这一块的东西   



在3.0里这个方法貌似被重修过 只能写float类型  无法写String  有人会说强转呢?  要是是"你好"怎么转 ,后来咨询了群里一位大佬帮忙  分享下心得   

不管你是Activity还是Fragment  重写此方法 直接复制粘贴就好:

class LabelFormatter implements IAxisValueFormatter {
    private final String[] mLabels;
    public LabelFormatter(String[] labels) {
        mLabels = labels;
    }
    @Override
    public String getFormattedValue(float value, AxisBase axis) {
        try {
            return mLabels[(int) value];
        } catch (Exception e) {
            e.printStackTrace();
            return mLabels[0];
        }
    }
}

然后在你的数据源中建一个数组:

String[] str = new String[listtittle.size()];

再接着把你要显示文字的数据放到这个数组里面去(不是所有数据,你要显示在X轴上的数据放进去):

for (int j = 0; j < listtittle.size(); j++){
    str[j] = listtittle.get(j);
}

然后丢给之前写的那个方法:

XAxis xAxis = mHorizontalBarChart.getXAxis();
LabelFormatter labelFormatter = new LabelFormatter(str);
xAxis.setValueFormatter(labelFormatter);

这样就ok了  :但是还有个小问题  我也不太确定每个人都有  可能我自己写略微有点问题  :

for (int i = 0; i < list.size(); i++) {
    float a;
    money = new BigDecimal(list_value.get(i));
    a = Float.parseFloat(String.valueOf(BigDecimalUtil.df.format(money)));
    float val = (float) (a);
    yVals1.add(new BarEntry(i, val));
}

这是我所有的数据源  这个i代表了X轴的坐标  ,对了之前那个重写的方法里面的value代表了也是X轴的坐标理解了这些就基本没什么问题了   但是有可能会出现显示错误 比如柱状图链接成一个了  之类的 那么就要去自己设置柱状图的宽度:

BarDataSet set1;
set1 = new BarDataSet(yVals1, "DataSet 1");
set1.setColor(Color.GREEN);
ArrayList<IBarDataSet> dataSets = new ArrayList<IBarDataSet>();
dataSets.add(set1);
BarData data = new BarData(dataSets);
data.setValueTextSize(10f);
data.setBarWidth(0.5f);
mHorizontalBarChart.setData(data);

就是这个0.5f  还有一个地方就是设置X轴的最小值:

 XAxis xl = mHorizontalBarChart.getXAxis();
            xl.setPosition(XAxis.XAxisPosition.BOTTOM);
//            xl.setDrawAxisLine(true);
            xl.setDrawGridLines(false);
            xl.setGranularity(1f);
            xl.setAxisMinValue(-0.5f);
            xl.setLabelCount(listtittle.size(), false);
一个是正一个是负  但是值都必须是一样的 要不然会出现柱状图错乱  不知道这个问题有没有人遇到过  可能就我一个人遇到过吧 哈哈  基本就是这样   88。

 


最后

以上就是温柔纸飞机为你收集整理的针对MPAndroidChart—3.0 X轴显示字符串类型文字的问题 以及一些bug 新人多多指教的全部内容,希望文章能够帮你解决针对MPAndroidChart—3.0 X轴显示字符串类型文字的问题 以及一些bug 新人多多指教所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部