今天做项目时,发现一个问题,如何使BarChart的顶部显示自定义的百分比,找了一下方法发现没有,于是自己写了一个方法
1.首先我们新建一个类实现
IValueFormatter接口,重写方法,并添加相应的方法,详情看代码注释
public class Zidingyi_Bar implements IValueFormatter {
private boolean mDrawWholeStack;//判断是否启用
private DecimalFormat mFormat;//格式化
int i=0;//全局i
public Zidingyi_Bar(boolean drawWholeStack) {
this.mDrawWholeStack = drawWholeStack;
this.mFormat = new DecimalFormat("00.0" );
//保留两位整数
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
//判断是否执行下列方法
if (mDrawWholeStack && entry instanceof BarEntry) {
BarEntry barEntry = (BarEntry) entry;
float[] vals = barEntry.getYVals();
if (vals != null) {
//是否在堆栈的顶部
if (vals[vals.length - 1] == value) {
//通过for循环取出对应的值
for (int j=1;j<2;i++){
float v = vals[j]/barEntry.getY()*100;
//返回我们想要的百分比
return mFormat.format(v)+"%";
}
} else {
return "";
}
}
}
// 返回一个建议的值
return mFormat.format(value);
}
}
用法
BarData data = new BarData(set1);
data.setValueFormatter(new Zidingyi_Bar(true));
实现图奉上