Skip to content

Slider ​

用于在连续(或分步)范围内选择数值的可拖动控件,绘制为胶囊轨道上的强调色填充。可选的头部行会显示 label 和实时数值读数。

导入 ​

kotlin
import io.github.heartcoolman.prism.ui.PrismSlider

基本用法 ​

kotlin
var value by remember { mutableStateOf(0.5f) }

PrismSlider(
    value = value,
    onValueChange = { value = it },
)

标签与数值读数 ​

当设置了 label 或 showValue 为 true 时,轨道上方会渲染一个头部行。通过 valueText 自定义读数。

kotlin
var value by remember { mutableStateOf(40f) }

PrismSlider(
    value = value,
    onValueChange = { value = it },
    valueRange = 0f..100f,
    label = "Slider",
    showValue = true,
    valueText = { "${it.roundToInt()}%" },
)

分步范围 ​

设置 steps 可在 valueRange 两端之间吸附到离散的停靠点。使用 onValueChangeFinished 在拖动结束后做出响应。

kotlin
PrismSlider(
    value = value,
    onValueChange = { value = it },
    valueRange = 0f..10f,
    steps = 9,
    onValueChangeFinished = { /* commit */ },
)

API ​

参数类型默认值说明
valueFloat—当前值(受控)。
onValueChange(Float) -> Unit—随滑块移动持续触发。
modifierModifierModifier应用于列容器的 Modifier(占满最大宽度)。
enabledBooleantrue滑块是否接受输入。
valueRangeClosedFloatingPointRange<Float>0f..1f包含端点的最小/最大范围。
stepsInt0两端之间离散停靠点的数量;0 表示连续。
labelString?null轨道上方的可选头部标签。
showValueBooleanfalse在头部行中显示数值读数。
valueText(Float) -> String{ it.roundToInt().toString() }格式化数值读数。
onValueChangeFinished(() -> Unit)?null在拖动/滚动手势结束时触发一次。

假定外层存在 PrismTheme { }。滑块和活动轨道使用 PrismTheme.colors.accent;非活动轨道使用 PrismTheme.colors.fillTertiary。

基于 MIT 许可发布。