0

文字列を水平ラベルとして設定するのに役立つカスタムフォーマッタを他のスレッドで見つけました。

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倍になります。これをどこにスクロールしても、画面には常に2つの同じ値があります。

編集: この画面では、水平ラベルは 1、2、3、4、5 である必要があります - 何かを変更する場合。

4

1 に答える 1

0

初めてこれを読むのが速すぎます。何が起こっているのかは、int から double への変換から int への単純な丸めだと思います。したがって、1.00000 だと思うものは 0.998 になり、その int は 0 になります。おそらく最初に値を丸め、次に int を取得しますか?

于 2014-08-11T19:04:45.860 に答える