2014-07-08 115 views
1

我想創建一個餅圖,分段標籤在兩行上呈現。是否有可能以編程方式更改PieRenderer?

要做到這一點,我必須重寫PieRenderer.drawSegmentLabelsource on bitbucket),但我不知道如何將我的渲染器類設置爲PieChart對象。

我發現一個pie.getRenderer(PieRenderer.class),得到渲染器,但我沒有發現任何方法設置它。有什麼方法可以將我的渲染器設置爲PieChart?我不想使用AndroidPlot的源代碼。

(Androidplot版本:0.6.1)

回答

1

它實際上是告訴Androidplot繪製時渲染器使用的格式化;當你添加一個段/系列時,你總是在一個Formatter實例中傳遞它。你需要延長SegmentFormatter這樣的:

/** 
* Formatter used by MyPieRenderer to draw a segment. 
*/ 
class MySegmentFormatter extends SegmentFormatter { 

    @Override 
    public Class<? extends SeriesRenderer> getRendererClass() { 
     return MyPieRenderer.class; 
    } 

    @Override 
    public SeriesRenderer getRendererInstance(final PieChart plot) { 
     return new MyPieRenderer(plot); 
    }  
} 

可以/還應該添加任何其他格式PARAMS到這個班被你drawSegmentLabel實現中使用。

最後,確保當添加要通過MyPieRenderer呈現段使用MySegmentFormatter的一個實例:

pie.addSeries(series, new MySegmentFormatter()); 
+0

你的答案几乎是滿的,但讓我延長你的答案。不擴展'getRendererInstance',繪圖不會爲我呈現。 (見:https://bitbucket.org/androidplot/androidplot/src/f4130df7b4f43c8f9b7834b4c9fd73422998ed3f/AndroidPlot-Core/src/main/java/com/androidplot/pie/SegmentFormatter.java?at=0.6.1#cl-128) – azendh

+1

糟糕 - 你是對的!不能相信我把它留下了。不知道爲什麼你的編輯被這些評論者拒絕,但我會更新我的回答與更正:) – Nick

+0

最後,問題解決了,謝謝。 :) – azendh

相關問題