改变一个域名标签的颜色 - Android Plot

时间:2013-12-19 21:24:35

标签: android plot androidplot

我使用android plot创建了一个条形图。

我想要的是,点击一个栏后,其匹配的域名标签会改变颜色。

我知道如何设置所有域标签颜色。使用:

 plot.getGraphWidget().getDomainLabelPaint().setColor(Color.WHITE);

但我想改变只有一个标签的颜色。

我的域名步骤是:

 plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);

我用这个改变了域的格式:

  plot.setDomainValueFormat(new Format() {

        @Override
        public StringBuffer format(final Object obj,
                final StringBuffer toAppendTo, final FieldPosition pos) {
            final int index = ((Number) obj).intValue();
            return new StringBuffer("").append((char) (index + 'A'));
        }

        @Override
        public Object parseObject(final String string,
                final ParsePosition position) {
            return null;
        }

    });

我有两个想法(我没有做到):

1)我可以通过扩展Format类(在上面的方法中)来改变域标签字符串的颜色吗? 要么 2)我可以在现有的标签之上绘制另一组域名标签吗?(可能会有不同的颜色)

还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

Androidplot的下一个版本将包含一个新类和一些可用于实现此目的的新方法。目前,here's a development build包含此新功能。新类是com.androidplot.util.Mapping,感兴趣的新方法将被添加到com.androidplot.xy.XYGraphWidget中。他们是:

public void setDomainLabelPaintMap(Mapping<Paint, Number> domainLabelPaintMap)
public void setRangeLabelPaintMap(Mapping<Paint, Number> rangeLabelPaintMap)

以下是一个如何使用它们的简单示例:

plot.getGraphWidget().setRangeLabelPaintMap(new Mapping<Paint, Number>() {

    private Paint customPaint;

    {
        // configure Paint instances either programmatically
        // (as shown here) or use Configurator to initialize via XML.
        customPaint = new Paint();
        customPaint.setColor(Color.RED);
    }

    @Override
    public Paint get(Number number) {
        if(number.doubleValue() > 1) {
            return customPaint;
        }
        return null;
    }
});