我使用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)我可以在现有的标签之上绘制另一组域名标签吗?(可能会有不同的颜色)
还有其他办法吗?
答案 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;
}
});