Jetpack Compose 滑块

借助 `Slider`可组合项,用户可以从一系列值中进行选择。您可以使用滑块来让用户执行以下操作:

  • 调整使用一系列值(例如音量和亮度)的设置。
  • 过滤图表中的数据,例如设置价格范围。
  • 用户输入,例如在评价中设置评分。

该滑块包含滑道、滑块、值标签和刻度线:

  • 轨迹:轨迹是水平条,表示滑块可以采用的值范围。
  • Thumb:滑块是滑块上的可拖动控制元素,可让用户选择轨道定义的范围内的特定值。
  • 刻度线:刻度线是沿滑块轨迹显示的可选视觉标记或指示器。

基本实现方法

kotlin 复制代码
Text(text = sliderPosition.value.toString(), modifier = Modifier.padding(horizontal = 15.dp))
Slider(
    value = sliderPosition.floatValue,
    onValueChange = { sliderPosition.floatValue = it },
    modifier = Modifier.padding(horizontal = 15.dp)
)

高级实现

实现更复杂的滑块时,您还可以利用以下参数。

  • colors :用于控制滑块颜色的 SliderColors 实例。
  • valueRange:滑块可采用的值的范围。
  • steps:滑块上拇指扣合的凹槽数量。

以下代码段会实现一个包含 9 个步骤的滑块,范围为 0.010.0。由于滑块会贴靠到每一步,因此此滑块是离散的。

kotlin 复制代码
val sliderPosition = remember { mutableFloatStateOf(0f) }
Column {
    Text(text = sliderPosition.value.roundToInt().toString(), modifier = Modifier.padding(horizontal = 15.dp))
    Slider(
      value = sliderPosition.floatValue,
      onValueChange = { sliderPosition.floatValue = it },
      modifier = Modifier.padding(horizontal = 15.dp),
      steps = 9,
      valueRange = 0f..10f
    )
}

范围滑块

kotlin 复制代码
val sliderPosition = remember { mutableStateOf(0f..100f) }
Column {
  Text(text = sliderPosition.toString(),modifier = Modifier.padding(horizontal = 15.dp))
  RangeSlider(
      value = sliderPosition.value,
      steps = 5,
      onValueChange = { range -> sliderPosition.value = range },
      valueRange = 0f..100f,
      onValueChangeFinished = {
          // launch some business logic update with the state you hold
          // viewModel.updateSelectedSliderValue(sliderPosition)
      },
      modifier = Modifier.padding(horizontal = 15.dp),
  )
}
相关推荐
alexhilton2 天前
千万别误用Android Skills
android·kotlin·android jetpack
XiaoLeisj4 天前
Kotlin Flow 常用操作符:数据变换 map、filter、onEach,时间控制 debounce、sample,终端聚合 reduce、fold
android·kotlin·android jetpack·协程·响应式编程·flow
XiaoLeisj5 天前
Kotlin Flow:冷流收集、并行订阅、emit 推送、delay 延迟、collect 全量收集与 collectLatest 的实时数据处理
android·kotlin·android jetpack·协程·flow
我命由我123456 天前
Jetpack Compose - @Preview 注解
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
学习使我健康9 天前
一个基于 **Jetpack Compose + Material 3** 的 Android 入门示例项目,演示 Compose 声明式 UI 的核心用法
ui·kotlin·android jetpack
alexhilton9 天前
Android XR 开发入门完全指南
android·kotlin·android jetpack
我命由我1234511 天前
Jetpack Compose - Material Design 断点范围、WindowSizeClass、针对不同屏幕尺寸创建预览、四类导航栏
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
我命由我1234512 天前
Jetpack Compose - MaterialExpressiveTheme 与 MaterialTheme、ColorScheme
android·java·开发语言·java-ee·kotlin·android jetpack·android runtime
我命由我1234512 天前
Kotlin 面向对象 - Kotlin 类变量与类方法
java·服务器·后端·java-ee·kotlin·android jetpack·android runtime
小孔龙14 天前
Compose 布局与绘制:LayoutNode、DisplayList 与 GraphicsLayer
android·android jetpack