如何在MPAndroidChart中绘制可拖动的限制线

如何在MPAndroidChart中绘制可拖动的限制线,android,mpandroidchart,Android,Mpandroidchart,我已经设法使用MP Android chart创建了一个折线图,并希望创建一条可拖动的线来设置限制。因此,如果该值超过行值,则用户将收到警报。我的用例类似于Android系统的数据使用限制 我遇到了LimitLines,还使用触摸事件回调进行了拖动 我的问题是,是否可以在对translate(onChartTranslate)事件的响应上动态添加限制线,以便模拟限制设置?这是一种比试图重载MarkerView更好的方法吗 我通过使用OnChartGestureListener侦听开始和结束拖动事

我已经设法使用MP Android chart创建了一个折线图,并希望创建一条可拖动的线来设置限制。因此,如果该值超过行值,则用户将收到警报。我的用例类似于Android系统的数据使用限制

我遇到了LimitLines,还使用触摸事件回调进行了拖动


我的问题是,是否可以在对translate(onChartTranslate)事件的响应上动态添加限制线,以便模拟限制设置?这是一种比试图重载MarkerView更好的方法吗

我通过使用
OnChartGestureListener
侦听开始和结束拖动事件,成功创建了一个可拖动(水平)
LimitLine

chart.onChartGestureListener = object: OnChartGestureListener {
    override fun onChartGestureEnd(me: MotionEvent?, lastPerformedGesture: ChartTouchListener.ChartGesture?) {
        if (lastPerformedGesture == ChartTouchListener.ChartGesture.DRAG && limitLineDragEnabled) {
            me?.let {
                displayLimitLine(me)
            }
            limitLineDragEnabled = false
        }
    }

    override fun onChartLongPressed(me: MotionEvent?) {
        if (binding.chart.isFullyZoomedOut) {
            limitLineDragEnabled = true

            me?.let {
                displayLimitLine(me)
            }
        }
    }
}
还有一个
ChartTouchListener
来捕捉拖动开始和结束之间的
MotionEvents
(遗憾的是,
OnChartGestureListener
无法在这方面帮助我):


在MPAndroidChart中使用limitline时,不能使用。您可以尝试使用FrameLayout包含MPAndroidChart和可拖动线。有关如何在包含可拖动线的图表上创建FrameLayout的问题,请参阅以下问题:
chart.onTouchListener = object: BarLineChartTouchListener(chart,  chart.viewPortHandler.matrixTouch, 3f) {

    @SuppressLint("ClickableViewAccessibility")
    override fun onTouch(v: View?, me: MotionEvent?): Boolean {
        if (limitLineDragEnabled) {
            me?.let {
                displayLimitLine(me)
            }
        }

        return super.onTouch(v, me)
    }

}