没有特定值的标签

时间:2015-01-09 16:21:43

标签: android formatter android-graphview

有没有办法为特定值设置标签?

我解释一下:我有一个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值。我试图返回一个空字符串或带有空格的字符串,但它使我的应用程序崩溃。

你知道如何做我想做的事吗?

太棒了!

提前致谢;)

1 个答案:

答案 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);