1、在使用环形图表的时候,我遇到一个问题,环上显示不出百分号(%)?
查看设置代码:
mChart.setUsePercentValues(true); //使用百分比显示
这里正确设置了,然后发现下面代码有猫腻:
pieData.setValueFormatter(new PercentFormatter());
查看PercentFormatter源代码:
public class PercentFormatter extends ValueFormatter
{
public DecimalFormat mFormat;
private PieChart pieChart;
public PercentFormatter() {
mFormat = new DecimalFormat("###,###,##0.0");
}
// Can be used to remove percent signs if the chart isn't in percent mode
public PercentFormatter(PieChart pieChart) {
this();
this.pieChart = pieChart;
}
@Override
public String getFormattedValue(float value) {
return mFormat.format(value) + " %";
}
@Override
public String getPieLabel(float value, PieEntry pieEntry) {
if (pieChart != null && pieChart.isUsePercentValuesEnabled()) {
// Converted to percent
return getFormattedValue(value);
} else {
// raw value, skip percent sign
return mFormat.format(value);
}
}
}
其中getPieLabel()方法:
if (pieChart != null && pieChart.isUsePercentValuesEnabled()) {
return getFormattedValue(value);
} else {
return mFormat.format(value);
}
只有pieChart不为空 和pieChart.isUsePercentValuesEnabled()设置为true同时满足才能显示出百分号。查看pieChart来源,原来是构造方法有猫腻,如果我没有传pieChart进来,不管怎么设置,这里永远都是空,也就是说不能显示出百分号。
public PercentFormatter() {
mFormat = new DecimalFormat("###,###,##0.0");
}
public PercentFormatter(PieChart pieChart) {
this();
this.pieChart = pieChart;
}
所以在构造PercentFormatter的时候,需要传pieChart 对象进来才能正常显示出百分号。
pieData.setValueFormatter(new PercentFormatter(mChart));