2013-12-19 22 views
1

我使用android plot創建了一個條形圖。只改變一個域名標籤的顏色 - 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類(在上面的方法中)來更改域標籤字符串的顏色? OR 2)我可以在現有的標籤上繪製另一套域名標籤嗎?(這將是不同的顏色)

有沒有另一種方法?

回答

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; 
    } 
});