Android 如果饼图中的值为0%,如何删除行

Android 如果饼图中的值为0%,如何删除行,android,charts,pie-chart,mpandroidchart,overlapping,Android,Charts,Pie Chart,Mpandroidchart,Overlapping,我正在制作一个饼图,为此,我正在使用库,对于任何数据或多个数据,值可能包含0%,并且我正在使用setYValuePosition(PieDataSet.ValuePosition.outside\u SLICE)显示饼图之外的值。 我不想在饼图中显示0%的值,我有一个解决方案,可以使用值格式化 public class CustomPercentFormatter implements IValueFormatter { private DecimalFormat mForma

我正在制作一个饼图,为此,我正在使用库,对于任何数据或多个数据,值可能包含0%,并且我正在使用
setYValuePosition(PieDataSet.ValuePosition.outside\u SLICE)
显示饼图之外的值。 我不想在饼图中显示0%的值,我有一个解决方案,可以使用值格式化

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) + " %";
    }
}
但是如果我使用的是“行”选项,则该行将显示为0%值,并重叠显示为多个0%值,因此有人可以帮助我删除0%值的“行”选项吗


我更改了
类中的方法
drawValues

如果值为0,则不显示行

只需提出一个条件:

if (entry.getValue() != 0.0) {
    if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
        c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
        c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
    }
}
而不是以下代码:

if (dataSet.getValueLineColor() != ColorTemplate.COLOR_NONE) {
    c.drawLine(pt0x, pt0y, pt1x, pt1y, mValueLinePaint);
    c.drawLine(pt1x, pt1y, pt2x, pt2y, mValueLinePaint);
}

如果不希望绘制这些线条,则必须将该线条的颜色设置为
ColorTemplate.color\u NONE


我没有足够的原始代码来指出具体要做什么,但在示例中,您可以检查如何做。

我也被它卡住了,这说明问题已经解决。但是,我无法找到方法pieChart.setDrawEmptyXLabel(false);使用MPAndroidChart:v3.0.2'必须更改PieChartRenderer.java方法drawValues()if(entry.getValue()!=0.0){if(dataSet.getValueLineColor()!=ColorTemplate.COLOR\u NONE){c.drawLine(pt0x,pt0y,pt1x,pt1y,mValueLinePaint);c.drawLine(pt1x,pt1y,pt2x,pt2y,mValueLinePaint);}}您好,您能告诉我如何将文本放置在图形之外吗?您可以通过以下方式设置数据:您不能通过编写代码直接更改行的颜色,它的黑色是从库中修复的。@gaurang检查示例,您可以使用setValueLineColor(),但只有一次,如果您打算将其用作ColorTemplate.COLOR\u NONE然后no,您可以在哪里看到行,然后看看我问的问题,不想显示值为零的行。我理解您的意思,但您的“解决方案”不好,您说您将更改库(或打开更改的合并请求)你将不再获得更新。但这是我想要的。