【发布时间】:2021-01-16 22:25:27
【问题描述】:
所以我有一个 "both" Slider 控制 "width" Slider 和 "length" Slider,如下:
<com.google.android.material.slider.Slider
android:id="@+id/width_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:value="40"
android:valueFrom="0" <-
android:valueTo="200" <-
android:stepSize="1"/> <-
<com.google.android.material.slider.Slider
android:id="@+id/height_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:value="40"
android:valueFrom="0" <-
android:valueTo="200" <-
android:stepSize="1"/> <-
<com.google.android.material.slider.Slider
android:id="@+id/both_slider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:value="100"
android:valueFrom="0" <-
android:valueTo="200" <-
android:stepSize="1"/> <-
正如我在上面标记的,它们都具有相同的范围(从 & 到)和 stepSize 到 1(重要),我将行为设置为
当在both
Slider上加/减值 1 时,其他两个也将加/减值 1。
代码如下:
private var previousValue = 50f //initial value, same as on xml
binding.bothSlider.addOnChangeListener { slider, value, fromUser ->
if (value > previousValue) {
binding.widthSlider.value++
binding.heightSlider.value++
}
if (value < previousValue) {
binding.widthSlider.value--
binding.heightSlider.value--
}
previousValue = value
}
奇怪的事情发生了,似乎 width 和 height Slider 的反应有点慢(我猜),并跳过一些点:
它们应该是同步的,因为它们具有相同的stepSize 和值范围(只是初始值不同)。任何帮助将不胜感激。
【问题讨论】:
-
您的听众被调用的频率可能比您想象的要少。也就是说,如果滑块在 50 并且您很快将其拖动到 70,它可能会调用 ~3 次,而不是 20 次。
-
@Ben P. 如果是这样,解决方案是什么?
标签: android material-design material-components-android android-slider