1

我使用 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)我可以在现有的域标签之上绘制另一组域标签吗?(那将是不同的颜色)

还有其他方法吗?

4

1 回答 1

0

Androidplot 的下一个版本将包含一个新类和几个可用于完成此任务的新方法。现在,这是一个包含此新功能的开发版本。新类是 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;
    }
});
于 2014-04-19T01:06:22.880 回答