首页 > 解决方案 > 在 MPAndroidChart 中,如何将 X 轴标签分成两条线?对使用任何修改后的库不感兴趣

问题描述

设置自定义 X 轴渲染器无助于在水平条形图中将 x 轴标签拆分为多行。

barChart.setXAxisRenderer(CustomXAxisRenderer(barChart.viewPortHandler, xAxis, barChart.getTransformer(yAxis.axisDependency)))

我对使用 MPAndroidChart 库的任何修改版本不感兴趣。

class CustomXAxisRenderer(viewPortHandler: ViewPortHandler?, xAxis: XAxis?, trans: Transformer?) : XAxisRenderer(viewPortHandler, xAxis, trans) {
        override fun drawLabel(c: Canvas?, formattedLabel: String, x: Float, y: Float, anchor: MPPointF?, angleDegrees: Float) {
            val line: List<String> = formattedLabel.split("\n")
            Utils.drawXAxisValue(c, line[0], y, x, mAxisLabelPaint, anchor, angleDegrees)
            for (i in 1 until line.size) { // we've already processed 1st line
                Utils.drawXAxisValue(c, line[i], y, x + mAxisLabelPaint.textSize * i,
                    mAxisLabelPaint, anchor, angleDegrees)
            }
        }
    }

请让我知道任何解决方案。

标签: androidmpandroidchart

解决方案


   class CustomXAxisRenderer(viewPortHandler: ViewPortHandler?, xAxis: XAxis?, trans: Transformer?, chart: HorizontalBarChart) : XAxisRendererHorizontalBarChart(viewPortHandler, xAxis, trans, chart) {
        override fun drawLabel(c: Canvas?, formattedLabel: String, x: Float, y: Float, anchor: MPPointF?, angleDegrees: Float) {
            val line: List<String> = formattedLabel.split("\n")
            Utils.drawXAxisValue(c, line[0], x, y, mAxisLabelPaint, anchor, angleDegrees)
            for (i in 1 until line.size) {
                Utils.drawXAxisValue(c, line[i], x, y + mAxisLabelPaint.textSize * i,
                    mAxisLabelPaint, anchor, angleDegrees)
            }
        }
    }

这解决了上述问题。


推荐阅读