← Back to Compose Multiplatform
RangeSlider
Component
in
Compose Multiplatform
. Since 1.3.0-beta01Overview
Examples
Community Notes
@Composable
fun RangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
}
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun StepRangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
},
steps = 5
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun RangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
}
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun StepRangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
},
steps = 5
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun RangeSliderWithCustomComponents() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
}
)
}
val startInteractionSource = remember { MutableInteractionSource() }
val endInteractionSource = remember { MutableInteractionSource() }
val startThumbAndTrackColors = SliderDefaults.colors(
thumbColor = Color.Blue,
activeTrackColor = Color.Red
)
val endThumbColors = SliderDefaults.colors(thumbColor = Color.Green)
Column {
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" },
startInteractionSource = startInteractionSource,
endInteractionSource = endInteractionSource,
startThumb = {
Label(
label = {
PlainTooltip(
modifier = Modifier
.requiredSize(45.dp, 25.dp)
.wrapContentWidth()
) {
val roundedStart =
(rangeSliderState.activeRangeStart * 100.0).roundToInt() / 100.0
Text(roundedStart.toString())
}
},
interactionSource = startInteractionSource
) {
SliderDefaults.Thumb(
interactionSource = startInteractionSource,
colors = startThumbAndTrackColors
)
}
},
endThumb = {
Label(
label = {
PlainTooltip(
modifier = Modifier
.requiredSize(45.dp, 25.dp)
.wrapContentWidth()
) {
val roundedEnd =
(rangeSliderState.activeRangeEnd * 100.0).roundToInt() / 100.0
Text(roundedEnd.toString())
}
},
interactionSource = endInteractionSource
) {
SliderDefaults.Thumb(
interactionSource = endInteractionSource,
colors = endThumbColors
)
}
},
track = { rangeSliderState ->
SliderDefaults.Track(
colors = startThumbAndTrackColors,
rangeSliderState = rangeSliderState
)
}
)
}
}
@Composable
fun RangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
}
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun StepRangeSliderSample() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
},
steps = 5
)
}
Column {
Text(text = (rangeSliderState.activeRangeStart..rangeSliderState.activeRangeEnd).toString())
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" }
)
}
}
@Composable
fun RangeSliderWithCustomComponents() {
val rangeSliderState = remember {
RangeSliderState(
0f,
100f,
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
}
)
}
val startInteractionSource = remember { MutableInteractionSource() }
val endInteractionSource = remember { MutableInteractionSource() }
val startThumbAndTrackColors = SliderDefaults.colors(
thumbColor = Color.Blue,
activeTrackColor = Color.Red
)
val endThumbColors = SliderDefaults.colors(thumbColor = Color.Green)
Column {
RangeSlider(
state = rangeSliderState,
modifier = Modifier.semantics { contentDescription = "Localized Description" },
startInteractionSource = startInteractionSource,
endInteractionSource = endInteractionSource,
startThumb = {
Label(
label = {
PlainTooltip(
modifier = Modifier
.requiredSize(45.dp, 25.dp)
.wrapContentWidth()
) {
val roundedStart =
(rangeSliderState.activeRangeStart * 100.0).roundToInt() / 100.0
Text(roundedStart.toString())
}
},
interactionSource = startInteractionSource
) {
SliderDefaults.Thumb(
interactionSource = startInteractionSource,
colors = startThumbAndTrackColors
)
}
},
endThumb = {
Label(
label = {
PlainTooltip(
modifier = Modifier
.requiredSize(45.dp, 25.dp)
.wrapContentWidth()
) {
val roundedEnd =
(rangeSliderState.activeRangeEnd * 100.0).roundToInt() / 100.0
Text(roundedEnd.toString())
}
},
interactionSource = endInteractionSource
) {
SliderDefaults.Thumb(
interactionSource = endInteractionSource,
colors = endThumbColors
)
}
},
track = { rangeSliderState ->
SliderDefaults.Track(
colors = startThumbAndTrackColors,
rangeSliderState = rangeSliderState
)
}
)
}
}
@Composable
@OptIn(ExperimentalMaterialApi::class)
fun RangeSliderSample() {
var sliderPosition by remember { mutableStateOf(0f..100f) }
Text(text = sliderPosition.toString())
RangeSlider(
value = sliderPosition,
onValueChange = { sliderPosition = it },
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
},
)
}
@Composable
@OptIn(ExperimentalMaterialApi::class)
fun StepRangeSliderSample() {
var sliderPosition by remember { mutableStateOf(0f..100f) }
Text(text = sliderPosition.toString())
RangeSlider(
steps = 5,
value = sliderPosition,
onValueChange = { sliderPosition = it },
valueRange = 0f..100f,
onValueChangeFinished = {
// launch some business logic update with the state you hold
// viewModel.updateSelectedSliderValue(sliderPosition)
},
colors = SliderDefaults.colors(
thumbColor = MaterialTheme.colors.secondary,
activeTrackColor = MaterialTheme.colors.secondary
)
)
}

Previous Component← RadioButton
Next ComponentRichTooltipBox →