Android中如何通过代码重置Material RangeSlider的数值
Material RangeSlider 编程重置滑块值方案
要实现清除筛选时重置com.google.android.material.slider.RangeSlider的选中范围,直接调用组件自带的setValues()方法传入默认值即可,组件会自动同步滑块UI位置,不需要额外调用invalidate之类的刷新方法。
具体实现步骤
- 首先在代码中绑定对应布局的RangeSlider实例:
// Kotlin 写法 val avgDueDaysSlider = findViewById<RangeSlider>(R.id.avg_due_days_spinner)
// Java 写法 RangeSlider avgDueDaysSlider = findViewById(R.id.avg_due_days_spinner);
- 在清除筛选的触发逻辑里,传入你预设的默认起止值即可完成重置。你布局里默认值配置的是
@array/range_slider_values_average_due,如果你的默认范围是最小值0到最大值999,直接写:
// Kotlin 重置滑块到0-999的初始范围 avgDueDaysSlider.values = listOf(0f, 999f)
// Java 重置滑块到0-999的初始范围 avgDueDaysSlider.setValues(0f, 999f);
注意:传入的数值必须落在布局配置的
android:valueFrom和android:valueTo区间内(也就是你当前设置的0~999),否则会触发参数非法报错。
- 如果不想硬编码默认值,避免后续改布局默认值时漏改代码,可以直接读取资源里定义的默认数组来赋值:
// Kotlin 读取资源默认值,和布局配置保持一致 val defaultArray = resources.obtainTypedArray(R.array.range_slider_values_average_due) val defaultMin = defaultArray.getFloat(0, 0f) val defaultMax = defaultArray.getFloat(1, 999f) defaultArray.recycle() avgDueDaysSlider.values = listOf(defaultMin, defaultMax)
内容的提问来源于stack exchange,提问作者Aditya Nandardhane
相关产品推荐
相关产品推荐

