2016-12-10 9 views
0

В моем приложении для Android я должен показать свои доходы и расходы в виде пирога. Сумма расходов будет отрицательной. Суммы относятся к типу float. Можно ли отображать как отрицательные, так и положительные значения в круговой диаграмме с использованием библиотеки MPAndroidChart?MPAndroidChart: отрицательные значения в круговой диаграмме или пользовательские ярлыки

Я пробовал с некоторыми отрицательными и положительными целыми значениями, и результат был ужасным. Круговая диаграмма будет вести себя как сумасшедшая, как панель с рамми или экран освещения.

Если я не могу иметь отрицательные значения в круговой диаграмме, можно ли показывать метки отрицательными, даже если фактические значения являются положительными?

+0

Как расходов быть отрицательным? Некоторые богаты. – AlphaQ

+0

@AlphaQ, что не проблема здесь. Если не расходы, у меня есть что-то вроде кредитных карт и кредитов, которые всегда имеют отрицательные значения, поэтому его не нужно беспокоиться о расходах, имеющих отрицательное значение. Вопрос заключается в отображении отрицательных и положительных значений в piechart. – KJEjava48

+1

Вы ** не можете ** иметь отрицательные значения в круговой диаграмме. Все значения должны содержать до 100, а отрицательные значения не помогут. Итак, попробуйте использовать негативные метки или используйте линейные/гистограммы (рекомендуется). – AlphaQ

ответ

0

Вы по существу спрашиваете, как настроить метки на диаграмме MPAndroidChart. Это можно сделать легко, написав собственную реализацию интерфейса IValueFormatter.

IValueFormatter имеет один метод, который необходимо реализовать:

getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler)` 

используются параметры метода для построения метку, которую в виде строки. Вы хотите, знак минус «-» перед так просто сделать это:

return "-" + mFormat.format(value) + " %"; 

Вот полная реализация:

public class NegativePercentFormatter implements IValueFormatter 

    protected DecimalFormat mFormat; 

    public NegativePercentFormatter() { 
     mFormat = new DecimalFormat("###,###,##0.0"); 
    } 


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

    @Override 
    public String getFormattedValue(float value, Entry entry, int dataSetIndex, ViewPortHandler viewPortHandler) { 
     return "-" + mFormat.format(value) + " %"; 
    } 
}