Slider
Functions summary
Unit |
@Composable |
Cmn
|
Functions
Slider
@Composable
fun Slider(
value: Float,
onValueChange: (Float) -> Unit,
modifier: Modifier = Modifier,
enabled: Boolean = true,
valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
steps: @IntRange(from = 0) Int = 0,
onValueChangeFinished: (() -> Unit)? = null,
interactionSource: MutableInteractionSource? = null,
colors: SliderColors = SliderDefaults.colors()
): Unit
Sliders allow users to make selections from a range of values.
Sliders reflect a range of values along a bar, from which users may select a single value. They are ideal for adjusting settings such as volume, brightness, or applying image filters.

Use continuous sliders to allow users to make meaningful selections that don’t require a specific value:
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.material.Slider import androidx.compose.material.Text import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp var sliderPosition by remember { mutableStateOf(0f) } Column(modifier = Modifier.padding(horizontal = 16.dp)) { Text(text = "%.2f".format(sliderPosition)) Slider(value = sliderPosition, onValueChange = { sliderPosition = it }) }
You can allow the user to choose only between predefined set of values by specifying the amount of steps between min and max values:
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding import androidx.compose.material.MaterialTheme import androidx.compose.material.Slider import androidx.compose.material.SliderDefaults import androidx.compose.material.Text import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp var sliderPosition by remember { mutableStateOf(0f) } Column(modifier = Modifier.padding(horizontal = 16.dp)) { Text(text = sliderPosition.roundToInt().toString()) Slider( value = sliderPosition, onValueChange = { sliderPosition = it }, valueRange = 0f..100f, onValueChangeFinished = { // launch some business logic update with the state you hold // viewModel.updateSelectedSliderValue(sliderPosition) }, // Only allow multiples of 10. Excluding the endpoints of `valueRange`, // there are 9 steps (10, 20, ..., 90). steps = 9, colors = SliderDefaults.colors( thumbColor = MaterialTheme.colors.secondary, activeTrackColor = MaterialTheme.colors.secondary, ), ) }
| Parameters | |
|---|---|
value: Float |
current value of the Slider. If outside of |
onValueChange: (Float) -> Unit |
lambda in which value should be updated |
modifier: Modifier = Modifier |
modifiers for the Slider layout |
enabled: Boolean = true |
whether or not component is enabled and can be interacted with or not |
valueRange: ClosedFloatingPointRange<Float> = 0f..1f |
range of values that Slider value can take. Passed |
steps: @IntRange(from = 0) Int = 0 |
if positive, specifies the amount of discrete allowable values between the endpoints of |
onValueChangeFinished: (() -> Unit)? = null |
lambda to be invoked when value change has ended. This callback shouldn't be used to update the slider value (use |
interactionSource: MutableInteractionSource? = null |
an optional hoisted |
colors: SliderColors = SliderDefaults.colors() |
|