这有可能吗?
我正在使用 com.google.android.material.slider.Slider
并且我知道 setLabelFormatter
事件允许您在拖动 Material Slider 但我想在用户停止拖动时获取值以了解 Material Slider 的当前值
类似这样的事情(没有被迫接受 ss 哈哈 lol)
非常感谢
最佳答案
我查看了 Material 组件 Slider 源代码,以了解它如何/何时决定显示其标签。
- 似乎没有任何公共(public) API 可以让我们让它显示....
- 它在收到触地事件时显示....
我写了一些函数来欺骗 Material slider 以为它被触摸,触发标签显示。
fun Slider.showLabelForever()
{
// start showing the label immediately
showLabelUntilNextTouchUp()
// send a touch event when user stops touching the slider to trigger the
// label to show up again
addOnSliderTouchListener(
object:Slider.OnSliderTouchListener
{
override fun onStartTrackingTouch(slider:Slider) = Unit
override fun onStopTrackingTouch(slider:Slider) = showLabelUntilNextTouchUp()
}
)
}
fun Slider.showLabelUntilNextTouchUp()
{
// sent a touch event to cause the label for the slider to show.
// a side effect of calling onTouchEvent is that it will cause
// the slider to change the progress value; we save the original
// progress value before calling onTouchEvent, then restore the
// value after calling onTouchEvent.
val originalValue = value
onTouchEvent(
MotionEvent.obtain(0L,0L,MotionEvent.ACTION_DOWN,0f,0f,0)
)
value = originalValue
}
关于android - 当用户停止拖动时在 Material Slider 中显示标签 [KOTLIN],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64947012/