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