如何使用 Mikephil 饼图从项目中删除小数位

How to remove decimal places from project using Mikephil pie chart

这里是整数的静态值

  private int upload=14, bill=15, unbill=85, total=100, unupload=12, sign=10, unsign=90, print=12, unprint=88;

设置饼图入口

ArrayList<Entry> entries = new ArrayList<>();

entries.add(new Entry(bill, 0));
entries.add(new Entry(unbill, 1));
entries.add(new Entry(print, 2));
entries.add(new Entry(unprint, 3));
entries.add(new Entry(sign, 4));
entries.add(new Entry(unsign, 5));
entries.add(new Entry(upload, 6));
entries.add(new Entry(unupload, 7));

 int colors[] ={Color.rgb(84, 139, 221), Color.rgb(251, 249, 146),Color.rgb(151, 212, 153), Color.rgb(183, 144, 189),Color.rgb(226, 148, 188),Color.rgb(208, 189, 121),Color.rgb(185, 147, 134),Color.rgb(206, 139, 130)};

这里我使用的是 Mikephil PieChart,下面我在数据集中添加了条目。

PieDataSet dataset = new PieDataSet(entries, "Graph");
dataset.setColors(colors);
dataset.setSliceSpace(3f);

我得到了这个输出。所以我想删除我在

中提到的小数位

输出完美。我只想要没有小数位的输出。我该怎么做?

如果您可以输入整数值作为参数,或者如果库方法不接受整数值,您必须自定义库!

这个问题与 which has a good answer already. This relevant question 基本相同,图书馆作者也有规范的回答。很高兴提出问题,但将来您可以通过事先研究以确保您的问题尚未被问到,从而避免对您的问题投反对票。

完全没有必要将库添加为 .jar 文件并像以前的 low-quality 答案那样编辑库代码。这只会破坏使用库和使用 Gradle.

等构建工具的全部目的

根据上面链接中已接受答案的确切内容,编写一个 class 实现 IValueFormatter,如下所示:

public class IntValueFormatter implements IValueFormatter {

    @Override
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) {
        return String.valueOf((int) value);
    }
}

然后你这样消费它:

pieDataSet.setValueFormatter(new IntValueFormatter());

您需要创建一个自定义的 percentFormatter 来格式化图表上的百分比显示。

public class Remover extends PercentFormatter {

private DecimalFormat mDecimalFormat;

public Remover (DecimalFormat format) {
    this.mDecimalFormat = format;
}

@Override
public String getFormattedValue(float value, Entry entry, int dataSetIndex,       ViewPortHandler viewPortHandler) {

return   "% " + mDecimalFormat.format(value) ;
 }
}

然后您可以通过在图表对象上调用 setValueFormatter() 将此格式化程序分配给您的图表。

设置ValueFormatter如下

  pieData.setValueFormatter(new ValueFormatter() {
            @Override
            public String getFormattedValue(float value) {
                return String.valueOf((int) Math.floor(value));
            }
        });

第一步: 请将其放在您的包文件夹中的“PercentFormatter”class 下方:

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);
        }
    }

}

第二步: 在你的 activity 设置 Piedata 的地方,在 PieDataset 中添加值格式是这样的:

 pieDataSet.setValueFormatter(new PercentFormatter());
 PieData pieData = new PieData(pieDataSet);
 pieChart.setData(pieData);

这样,我们就可以去掉饼图数据中的小数点了。

return String.valueOf(Math.floor(value)).replace(".0","") 这对我有用