有没有办法为特定值设置标签?
我解释一下:我有一个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时,库会返回null,它会放置标签的double值。我试图返回一个空字符串或带有空格的字符串,但它使我的应用程序崩溃。
你知道如何做我想做的事吗?
太棒了!
提前致谢;)
答案 0 :(得分:0)
如果你不介意小数点,你可以简单地说:
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);
或者:
// 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);