【发布时间】:2016-01-01 15:51:43
【问题描述】:
有没有办法抑制 MP android 图表(饼图)中的零值文本
【问题讨论】:
有没有办法抑制 MP android 图表(饼图)中的零值文本
【问题讨论】:
如果 value==0.0f,则使用自定义格式化程序并返回空字符串
public class CustomPercentFormatter implements IValueFormatter {
private DecimalFormat mFormat;
public CustomPercentFormatter() {
mFormat = new DecimalFormat("###,###,##0.0");
}
public CustomPercentFormatter(DecimalFormat format) {
this.mFormat = format;
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
if (value == 0.0f)
return "";
return mFormat.format(value) + " %";
}
}
设置格式化程序:
lineData.setValueFormatter(new CustomPercentFormatter());
【讨论】:
怎么样?
if(value > 0) dataSet.add(...)
else {
// do nothing
}
或者写你自己的ValueFormatter来抑制零。
【讨论】:
您可以为MPChart 实现一个新的格式化程序,正如 Ali Zarei 在他的回答中声明的那样。但是您可能仍然需要在DefaultValueFormatter 中实现的库的数字设置选项
要实现这一点,您只需创建一个新的格式化程序并从DefaultValueFormatter 的getFormattedValue 方法从DefaultValueFormatter 和Override 扩展它,然后检查值是否大于0。
public class NonZeroChartValueFormatter extends DefaultValueFormatter {
public NonZeroChartValueFormatter(int digits) {
super(digits);
}
@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex,
ViewPortHandler viewPortHandler) {
if (value > 0) {
return mFormat.format(value);
} else {
return "";
}
}
}
【讨论】:
Kotlin 开发者:
class MyCustomValueFormatter : ValueFormatter() {
override fun getFormattedValue(value: Float): String {
return if (value == 0f) {
""
} else {
value.roundToInt().toString() + " %"
}
}
}
并像这样使用它
pieData.setValueFormatter(MyCustomValueFormatter())
【讨论】: