Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MPAndroidChart,如何删除小数百分比而不显示低于10的百分比?_Android_Mpandroidchart - Fatal编程技术网

MPAndroidChart,如何删除小数百分比而不显示低于10的百分比?

MPAndroidChart,如何删除小数百分比而不显示低于10的百分比?,android,mpandroidchart,Android,Mpandroidchart,我正在使用,我有两个问题: MPAndroid饼图删除小数百分比 不在饼图上显示值小于10%的值,但显示切片;对于低于10%的百分比,不应仅显示文本 版本3.0.0+的更新 现在可以通过扩展ValueFormatter类并重写格式化所需的方法来格式化值。这也是可以插入自定义逻辑(例如,仅显示大于10的值的标签)的地方 class MyValueFormatter : ValueFormatter() { private val format = DecimalFormat("###,#

我正在使用,我有两个问题:

  • MPAndroid饼图删除小数百分比
  • 不在饼图上显示值小于10%的值,但显示切片;对于低于10%的百分比,不应仅显示文本

版本3.0.0+的更新

现在可以通过扩展
ValueFormatter
类并重写格式化所需的方法来格式化值。这也是可以插入自定义逻辑(例如,仅显示大于10的值的标签)的地方

class MyValueFormatter : ValueFormatter() {
    private val format = DecimalFormat("###,##0.0")

    // override this for e.g. LineChart or ScatterChart
    override fun getPointLabel(entry: Entry?): String {
        return format.format(entry?.y)
    }
}
更多示例和详细说明请参见。

对于MPAndroidChart的新版本(3.0.0),请使用以下方法:

setData()方法中:

 PieData data = new PieData(dataSet);
 data.setValueFormatter(new DecimalRemover(new DecimalFormat("###,###,###")));
以下是小数删除器类:

public class DecimalRemover extends PercentFormatter {

protected DecimalFormat mFormat;

public DecimalRemover(DecimalFormat format) {
    this.mFormat = format;
}

@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
    if(value < 10) return "";
    return mFormat.format(value) + " %";
}
}
公共类小数删除程序扩展了PercentFormatter{
受保护的十进制格式;
公共小数删除程序(十进制格式){
this.mFormat=格式;
}
@凌驾
公共字符串getFormattedValue(浮点值、条目、int-dataSetIndex、ViewPortHandler和ViewPortHandler){
如果(值<10)返回“”;
返回mFormat.format(值)+“%”;
}
}

ValueFormatter已被PercentFormatter取代

要删除小数百分比,请轻松使用:
PiedataSet.setValueFormatter(新的百分比格式(新的十进制格式(“####,####,##0”))

第一步: 请将以下“
PercentFormatter
”类放入您的软件包文件夹中:

public class PercentFormatter extends ValueFormatter {

    public DecimalFormat mFormat;
    private PieChart pieChart;

    public PercentFormatter() {
        mFormat = new DecimalFormat("###,###,##");
    }
    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);
        }
    }

}
第二步: 在Piedata集合所在的活动中,按以下方式在PieDataset中添加值格式:

 pieChart = (PieChart) findViewById(R.id.pieChart);
 PieDataSet pieDataSet = new PieDataSet(getData(approved, pending, rejected), "");
 
 pieDataSet.setValueFormatter(new PercentFormatter());
 PieData pieData = new PieData(pieDataSet);
 pieChart.setData(pieData);

这样,我们就可以删除饼图数据中的小数点。

现在MPAndroidChart 3.0.0中不推荐使用此选项。如何同时使用值和百分比?IValueFormatter不推荐使用其他方法吗?PercentFormatter需要一个饼图作为参数,现在不是DecimalFormatgetFormattedValuedeprecated@NikosHidalgo请使用当前支持此功能的方法更新答案。