我在其他线程中找到了自定义格式化程序,这有助于将字符串设置为水平标签。
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 - 如果它发生任何变化。
答案 0 :(得分:0)
第一次看得太快了。我认为正在进行的是从int转换为double然后再转换为int的简单舍入。因此,您认为1.00000最终为0.998,其中的int为0.也许首先对该值进行整数然后取int?