跳转到内容

Slider

Slider 是 Miuix 中的基础交互组件,用于在连续的数值范围内进行选择。用户可以通过拖动滑块来调整值,适用于诸如音量调节、亮度控制、进度显示等场景。

引入

kotlin
import top.yukonga.miuix.kmp.basic.Slider

基本用法

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

Slider(
    progress = sliderValue,
    onProgressChange = { sliderValue = it }
)

组件状态

禁用状态

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

Slider(
    progress = progress,
    onProgressChange = { progress = it },
    enabled = false
)

触觉反馈

Slider 支持触觉反馈,可以通过 hapticEffect 参数自定义反馈效果,详见 SliderHapticEffect

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

Slider(
    progress = progress,
    onProgressChange = { progress = it },
    hapticEffect = SliderHapticEffect.Step
)

属性

Slider 属性

属性名类型说明默认值是否必须
progressFloat当前滑块的进度值-
onProgressChange(Float) -> Unit进度值变化时的回调函数-
modifierModifier应用于滑块的修饰符Modifier
enabledBoolean是否启用滑块true
minValueFloat滑块的最小值0f
maxValueFloat滑块的最大值1f
heightDp滑块的高度SliderDefaults.MinHeight
colorsSliderColors滑块的颜色配置SliderDefaults.sliderColors()
effectBoolean是否显示特殊效果false
decimalPlacesInt拖动指示器中显示的小数位2
hapticEffectSliderDefaults.SliderHapticEffect滑块的触感反馈类型SliderDefaults.DefaultHapticEffect

SliderDefaults 对象

SliderDefaults 对象提供了 Slider 组件的默认配置。

常量

常量名类型默认值说明
MinHeightDp30.dp滑块的默认高度
DefaultHapticEffectSliderHapticEffectSliderHapticEffect.Edge默认的触感反馈类型

SliderHapticEffect

说明
None无触感反馈
Edge在 0% 和 100% 处有触感反馈
Step在每个步长处有触感反馈

方法

方法名返回类型说明
sliderColors()SliderColors创建滑块的默认颜色配置

SliderColors 类

属性名类型说明
foregroundColorColor滑块的前景颜色
disabledForegroundColorColor禁用状态时滑块的前景颜色
backgroundColorColor滑块的背景颜色

进阶用法

自定义数值范围

kotlin
var temperature by remember { mutableStateOf(25f) }

Column {
    Text("温度: $temperature°C")
    Slider(
        progress = temperature,
        onProgressChange = { temperature = it },
        minValue = 16f,
        maxValue = 32f
    )
}

自定义颜色

kotlin
var volume by remember { mutableStateOf(0.7f) }

Slider(
    progress = volume,
    onProgressChange = { volume = it },
    colors = SliderDefaults.sliderColors(
        foregroundColor = Color.Red,
        backgroundColor = Color.LightGray
    )
)

自定义高度和效果

kotlin
var brightness by remember { mutableStateOf(0.8f) }

Slider(
    progress = brightness,
    onProgressChange = { brightness = it },
    height = 40.dp,
    effect = true
)

带触感反馈的滑块

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

Slider(
    progress = progress,
    onProgressChange = { progress = it },
    hapticEffect = SliderDefaults.SliderHapticEffect.Step
)

基于 Apache-2.0 许可发布