我已经设法使用 MP Android Chart 创建了一个折线图,并希望创建一条可拖动的线来设置限制。因此,如果该值越过线值,则用户会收到警报。我的用例类似于 Android 系统数据使用限制。
我遇到了 LimitLines - https://github.com/PhilJay/MPAndroidChart/wiki/The-Axis并且还使用触摸事件回调 https://github.com/PhilJay/MPAndroidChart/wiki/Interaction-with-the-Chart 进行拖动
我的问题是我是否可以在对翻译(onChartTranslate)事件的响应中动态添加限制线,以便我可以模拟限制设置?这是比尝试重载 MarkerView 更好的方法吗?
最佳答案
我设法创建了一个可拖动的(水平)LimitLine
通过使用 OnChartGestureListener
监听拖动事件的开始和结束:
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
无法帮助我):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)
}
}
关于android - 如何在 MPAndroidChart 中制作可拖动的 LimitLine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32135964/