Android MPAndroid Chart使用、X軸ラベルカスタム表示、座標表示不全、改行表示

2401 ワード

一、カスタム表示
XAxis xAxis = chart.getXAxis();//    X 
ValueFormatter valueFormatter = new ValueFormatter() {
            private final String[] xLableList = new String[]{"110
", "120
", "119
", "110
", "120
", "119
", "110
", "120
", "119
"}; @Override public String getFormattedValue(float value) { if (value >= 0) { return mActivities[(int) value % xLableList.length]; } else { return ""; } } }; xAxis.setValueFormatter(valueFormatter);// , x 。

xAxis.setGranularity(1)
設定後valueは0から始まり、毎回1を加算します
xAxis.setLabelCount(xLableList.size());
X軸表示個数に応じてラベル数を設定
三、X軸座標改行表示
ソリューションsetExtraBottomOffset+カスタムCustomCustomXAxisRenderer
カスタムx座標のtextSizeがxAxis.textSize = 9fであると仮定すると、下部の追加コントロールを設定して改行された文字表示を提供する空間chart.extraBottomOffset = 3 * 9fが必要であり、9は設定されたばかりのxAxis.textSizeであり、2は私のX座標文字が2行あることを示す
chart.setExtraBottomOffset(2 * 9f);
xAxis.setTextSize(9);

クラスXAxisRendererの書き換え
public class CustomXAxisRenderer extends XAxisRenderer {

    public CustomXAxisRenderer(ViewPortHandler viewPortHandler, XAxis xAxis, Transformer trans) {
        super(viewPortHandler, xAxis, trans);
    }

    @Override
    protected void drawLabel(Canvas c, String formattedLabel, float x, float y, MPPointF anchor, float angleDegrees) {
//        super.drawLabel(c, formattedLabel, x, y, anchor, angleDegrees);//     ,          
        String[] lines = formattedLabel.split("
"); for (int i = 0; i < lines.length; i++) { float vOffset = i * mAxisLabelPaint.getTextSize(); Utils.drawXAxisValue(c, lines[i], x, y + vOffset, mAxisLabelPaint, anchor, angleDegrees); } } }
        
chart.setXAxisRenderer(new CustomXAxisRenderer(chart.getViewPortHandler(), chart.getXAxis(), chart.getTransformer(YAxis.AxisDependency.LEFT)));

第3条X軸座標表示をカスタマイズし、オブジェクトをセットで追加する必要があります.例:第1条
記事の参考http://www.imooc.com/article/details/id/255294