Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MpAndroidChart中xAxis上的自定义标签指示器_Android_Mpandroidchart - Fatal编程技术网

MpAndroidChart中xAxis上的自定义标签指示器

MpAndroidChart中xAxis上的自定义标签指示器,android,mpandroidchart,Android,Mpandroidchart,我正在使用一个名为MPAndroidChart的图表库,它响应了我的大部分需求。但是,我需要定制一些部件 我想为xAxis上的标签画一些指示线,如下所示: 当我深入研究时,我可以编写一个CustomAxisRenderer,但似乎我需要复制大多数super类代码 我希望在xAxis上精确绘制最小值。该最小值可以是0或任何其他数字 如何做到这一点?甚至有可能做到吗 任何帮助或提示都将不胜感激。我解决了第一个问题: internal class IndicatorAxisRenderer(

我正在使用一个名为MPAndroidChart的图表库,它响应了我的大部分需求。但是,我需要定制一些部件

  • 我想为
    xAxis
    上的标签画一些指示线,如下所示:
  • 当我深入研究时,我可以编写一个
    CustomAxisRenderer
    ,但似乎我需要复制大多数
    super
    类代码

  • 我希望在
    xAxis
    上精确绘制最小值。该最小值可以是0或任何其他数字
  • 如何做到这一点?甚至有可能做到吗


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

    我解决了第一个问题:

    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
        }
    }
    
    内部类指示符(
    viewPortHandler:viewPortHandler,
    xAxis:xAxis,
    变压器
    ):XAxisRenderer(viewPortHandler、xAxis、trans){
    专用变量指示器宽度=1f
    专用var指示器灯=1f
    private fun getXLabelPositions():FloatArray{
    变量i=0
    val位置=浮点数组(mXAxis.mEntryCount*2)
    val CenterInEnabled=mXAxis.isCenterAxisLabelsEnabled
    而(i
    这段代码在xAxis的顶部呈现指示符行