Нет меток для специальных значений

Есть ли способ установить метку для конкретных значений?

Я объясняю: у меня есть GraphView, для которого значения Y не могут быть выше 3. И мне нужны только метки вертикалей для значений 1, 2 и 3.

Я попытался использовать следующий метод:

myGraph.getGraphViewStyle().setNumVerticalLabels(3);

Но этот ставит мои метки для значений Y 0, 1,5 и 3. Это не то, что я хочу.

Затем я попытался установить собственный форматировщик меток. Но дело в том, что мне не удалось поставить никаких значений для других меток.

Вот мой текущий код:

myGraph.setCustomLabelFormatter(new CustomLabelFormatter() {
    @Override
    public String formatLabel(double value, boolean isValueX) {
        if(!isValueX) {

            String res = null;

            if(value == 1.0) {
                res = getString(R.string.my_label_1);
            } else if(value == 2.0) {
                res = getString(R.string.my_label_2);
            } else if(value == 3.0) {
                res = getString(R.string.my_label_3);
            }

            return res;
        }

        return null;
    }
}

Поэтому я возвращаю null, когда не хочу отображать значение, но библиотека делает это, когда мы возвращаем null, она помещает двойное значение метки. Я пытался вернуть пустую строку или строку с пробелами, но это приводит к сбою моего приложения.

Есть ли у вас какие-либо идеи о том, как сделать то, что я хочу?

Было бы здорово !

Заранее спасибо ;)


person Alexandre D.    schedule 09.01.2015    source источник
comment
пустая строка не должна падать. можешь дать обратную связь? Я проверю это. Может быть, попробовать вернуть строку с 2 или 3 пробелами?   -  person appsthatmatter    schedule 18.01.2015
comment
будет исправлено в 4.0.1 github.com/jjoe64/GraphView/issues/278   -  person appsthatmatter    schedule 21.01.2015
comment
Аналогично: stackoverflow.com/questions/27861893/   -  person arober11    schedule 02.03.2015


Ответы (1)


Если вы не возражаете против десятичной точки, вы можете просто:

    myGraph.getGraphViewStyle().setNumVerticalLabels(4);

В качестве альтернативы, чтобы удалить десятичную точку, вы можете использовать staticLabelFormatter, например.

   // Version 4.0.0  syntax

    StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graphView);
    staticLabelsFormatter.setVerticalLabels(new String[]{"0","1","2","3"});

    graphView.getViewport().setYAxisBoundsManual(true);
    graphView.getViewport().setMinY(0d);
    graphView.getViewport().setMaxY(3d);
    graphView.getGridLabelRenderer().setNumVerticalLabels(4);
    graphView.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter);

Or:

    // Version 4.0.0  syntax

    NumberFormat nf = NumberFormat.getInstance();
    nf.setMinimumFractionDigits(0);

    StaticLabelsFormatter staticLabelsFormatter = new StaticLabelsFormatter(graphView);
    staticLabelsFormatter.setDynamicLabelFormatter(new DefaultLabelFormatter(nf, nf));

    graphView.getViewport().setYAxisBoundsManual(true);
    graphView.getViewport().setMinY(0d);
    graphView.getViewport().setMaxY(3d);
    graphView.getGridLabelRenderer().setNumVerticalLabels(4); 
    graphView.getGridLabelRenderer().setLabelFormatter(staticLabelsFormatter);
person arober11    schedule 02.03.2015