android - 当用户停止拖动时在 Material Slider 中显示标签 [KOTLIN]

标签 android kotlin slider material-design

这有可能吗?

我正在使用 com.google.android.material.slider.Slider 并且我知道 setLabelFormatter 事件允许您在拖动 Material Slider 但我想在用户停止拖动时获取值以了解 Material Slider 的当前值

enter image description here

类似这样的事情(没有被迫接受 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/

相关文章:

android - 如何在 xamarin 移动应用程序中使用/安装客户端证书

java - 使用 Toast 处理 Fragment 类之外的异常

android - Apk 在 Google Playstore 上发布时暂停违反模拟政策

java - 双 handle slider android

javascript - 从 w3school 编辑 slider

JQuery - 光滑 slider - 仅显示第一张图像

android - 如何将 Gradle 与 Apache Cordova 同步

java - 在 Kotlin 中查找 Sugar ORM 记录

string - 按固定数量的字符拆分字符串

regex - 在多行中拆分正则表达式