【问题标题】:Custom label indicators on xAxis in MpAndroidChartMpAndroidChart 中 xAxis 上的自定义标签指示器
【发布时间】:2020-09-16 16:54:54
【问题描述】:

我正在使用一个名为 MPAndroidChart 的图表库,它可以满足我的大部分需求。但是,我需要自定义一些部分。

  1. 我想在xAxis 上为标签绘制一些指示线,如下所示:

随着我的深入研究,我可以写一个CustomAxisRenderer,但似乎我需要复制大部分super 类代码。

  1. 我希望将最小值准确地绘制在xAxis 上。这个最小值可以是 0 或任何其他数字。

如何做到这一点?甚至有可能做到吗?

任何帮助或提示将不胜感激。

【问题讨论】:

    标签: android mpandroidchart


    【解决方案1】:

    我解决了第一个问题:

    internal class IndicatorAxisRenderer(
        viewPortHandler: ViewPortHandler,
        xAxis: XAxis,
        trans: Transformer
    ) : XAxisRenderer(viewPortHandler, xAxis, trans) {
    
        private var indicatorWidth = 1f
        private var indicatorHeight = 1f
    
        private fun getXLabelPositions(): FloatArray {
            var i = 0
            val positions = FloatArray(mXAxis.mEntryCount * 2)
            val centeringEnabled = mXAxis.isCenterAxisLabelsEnabled
            while (i < positions.size) {
                if (centeringEnabled) {
                    positions[i] = mXAxis.mCenteredEntries[i / 2]
                } else {
                    positions[i] = mXAxis.mEntries[i / 2]
                }
                positions[i + 1] = 0f
                i += 2
            }
            mTrans.pointValuesToPixel(positions)
            return positions
        }
    
        override fun renderAxisLine(c: Canvas?) {
            super.renderAxisLine(c)
            val positions = getXLabelPositions()
            var i = 0
            while (i < positions.size) {
                val x = positions[i]
                if (mViewPortHandler.isInBoundsX(x)) {
                    val y = mViewPortHandler.contentBottom()
                    c?.drawLine(
                        x, y,
                        x, y + indicatorHeight,
                        mAxisLinePaint
                    )
                }
                i += 2
            }
        }
    
        fun setIndicatorSize(width: Float, height: Float) {
            this.indicatorWidth = width
            this.indicatorHeight = height
        }
    }
    

    此代码在 xAxis 顶部呈现指标线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      相关资源
      最近更新 更多