2017-03-10 6 views
0

こんにちは、私はグラフィックのこの種は、可能であればMP Androidのチャートを使用して知ってwan't:X軸上のMPアンドロイドチャート「表」(X軸用のカスタムレンダラ)

enter image description here

私は本当に必要なもの他のいくつかのUIコンポーネント(この場合、4つのTextViewとImageView)でXAxis全体をカスタマイズすることができます。私はそれの内側にBarChartでRecyclerViewを使用してのようなさまざまなソリューションをしようとしてきた

がセルだが、私は、効率的なUIを実現していないです:

enter image description here

私はまた、以下のリストビューを追加しようとしましたグラフを同期することはできませんでした。

すべてのアイデア?

答えて

2

あなたがあなたの写真に投稿したグラフィックスの種類は、MPAndroidChartを使っては簡単ではありませんが、確かに可能です。

あなたはXAxisRendererの独自のサブクラスを記述する必要があります。

ViewPortHandler vph = mChart.getViewPortHandler(); 
XAxisRenderer xAxisRenderer = new CustomXAxisRenderer(vph, mChart.getXAxis(), vph.getTransformer(AxisDependency.LEFT), image); 
mChart.setXAxisRenderer(new CustomXAxisRenderer()); 

非常に単純な概念実証は次のようになります:

public class CustomXAxisRenderer extends XAxisRenderer { 

    Bitmap image; 

    public CustomXAxisRenderer(ViewPortHandler viewPortHandler, XAxis xAxis, Transformer transformer, Bitmap image) { 
     super(viewPortHandler, xAxis, transformer); 
     this.image = image; 
    } 

    @Override 
    protected void drawLabels(Canvas c, float pos, MPPointF anchor) { 
     //same code as super class 
     //then, code to draw the bitmap image on the canvas 
     //and, code to draw the extra text 
    } 
} 

の方法については、以下の回答をご覧ください。ビットマップイメージをスケーリングしてキャンバスに描画する:

How to make a custom image inside bars in MPAndroidChart

How to make a custom highlight drawable in MPAndroidChart

完全なソリューションをお持ちの場合は、ここに回答として投稿してください。がんばろう!コンセプトの証明のための

注:drawLabelsをオーバーライドするには、少しの粗です。より良い解決策は、drawLabelsから別のメソッドを抽出し、それがスーパークラスのdraw(Canvas c)で呼び出されていることを確認します。その場合は、this answerを参照してください。

+0

XAxisRendererのdrawLabelsを上書きするのはなぜ粗末なのですか? – user3261128

+0

@ user3261128あなたはその方法でラベルを描くのとは別に何かをやっているので、それぞれの方法には1つの責任があると思います –