setCustomLabelFormatter удваивает значения в метке

У меня есть специальный модуль форматирования, который я нашел в другом потоке, который помогает устанавливать строки в качестве горизонтальной метки.

GraphViewSeries series = new GraphViewSeries(new GraphView.GraphViewData[] {
                new GraphView.GraphViewData(0, 14d),
                new GraphView.GraphViewData(1, 7d),
                new GraphView.GraphViewData(2, 12d),
                new GraphView.GraphViewData(3, 10d),
                new GraphView.GraphViewData(4, 14d),
                new GraphView.GraphViewData(5, 8d),
                new GraphView.GraphViewData(6, 25d),
                new GraphView.GraphViewData(7, 10d),
                new GraphView.GraphViewData(8, 14d),
                new GraphView.GraphViewData(9, 7d),
                new GraphView.GraphViewData(10, 5d),
        });
    GraphView graphView = new BarGraphView(this, "Demo");

    graphView.addSeries(series);
    horizontalLabels = new String[]{"1", "2", "3", "4", "5", "6",
            "7", "8", "9", "10", "11"};
    graphView.setViewPort(0, 3);
    graphView.setScrollable(true);
    graphView.setManualYAxisBounds(30, 0);
    graphView.getGraphViewStyle().setNumVerticalLabels(6);
    graphView.getGraphViewStyle().setNumHorizontalLabels(5);
    //graphView.getGraphViewStyle().setTextSize();

    graphView.setCustomLabelFormatter(new CustomLabelFormatter() {
        @Override
        public String formatLabel(double value, boolean isValueX) {
            if (isValueX) {
                return horizontalLabels[(int) value];
            } else
                return null;
        }
    });


    LinearLayout layout = (LinearLayout) findViewById(R.id.graph1);
    layout.addView(graphView);

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

Проблема

Это выглядит так, когда я прокручиваю график, он все еще удваивает значения. На экране всегда есть 2 одинаковых значения, независимо от того, где я прокручиваю это.

РЕДАКТИРОВАТЬ: На этих экранах горизонтальные метки должны быть 1, 2, 3, 4, 5 - если это что-то меняет.


person Damian Lesniak    schedule 08.08.2014    source источник


Ответы (1)


Первый раз прочитал слишком быстро. Я думаю, что происходит простое округление от преобразования int до double, а затем обратно в int. Таким образом, то, что вы считаете 1,00000, заканчивается 0,998, а целое число равно 0. Возможно, сначала округлить значение, а затем взять целое?

person TrustNoOne    schedule 11.08.2014