MPAndroidChart之ValueFormatter

3/1/2017来源:Android开发人气:2097

在图表中,大多数情况下需要我们自己定义X轴和Y轴的Labels,系统也提供给了我们一个接口IAxisValueFormatter,那么我们就需要写一个类去继承这个接口,然后根据需求去设置X轴和Y轴的Labels。 首先我们创建一个类CustomYValueFormatter,然后继承IAxisValueFormatter,然后重写getFormattedValue这个方法,我们就要在这个方法里进行逻辑的处理。 这里我就以我项目中的需求来展示:

public class CustomYValueFormatter implements IAxisValueFormatter { /*PRivate DecimalFormat mFormat;*/ private boolean drawValue; public CustomYValueFormatter(boolean drawValue) { /* mFormat = new DecimalFormat("###,###,###,##0");*/ this.drawValue = drawValue; } @Override public String getFormattedValue(float value, AxisBase axis) { /*if (value==0){ return mFormat.format(value); } return *//*"¥" + *//*mFormat.format(value);*/ if (drawValue){ if (value>=100000){ return (int)value/10000+"w -"; }else if (value>=10000){ return (int)value/10000+"."+(int) value/1000%10+"w -"; }else { return (int)value+" -"; } }else { return "-"; } } }

然后给Y轴设置自定义的ValueFormatter。

YAxis leftAxis = lineChart.getAxisLeft(); leftAxis.setValueFormatter(new CustomYValueFormatter(true));

当然也可以传一个数组进来,动态的添加Labels

public class CustomXValueFormatter implements IAxisValueFormatter { private List<String> labels; /** * @param labels 要显示的标签字符数组 */ public CustomXValueFormatter(List<String> labels) { this.labels = labels; } @Override public String getFormattedValue(float value, AxisBase axis) { LoggerUtil.d("value:" + value + ";size:" + labels.size()); return labels.get((int) value % labels.size()); } }

然后给X轴设置自定义的ValueFormatter:

lineChart.getXAxis().setValueFormatter(new CustomXValueFormatter(mXLabels));

下面我们看一下整体的效果图 这里写图片描述