Saltearse al contenido

Range Slider

MaterialMaterial 3
Imagen del componente - Material [RangeSlider]RangeSlider - Material 3 [RangeSliderM3]

El componente RangeSlider en Jetpack Compose es un control deslizante que permite a los usuarios seleccionar un rango de valores dentro de un intervalo definido. Es particularmente útil para casos donde se requiere especificar un rango, como en filtros de precios, selección de tiempo, o cualquier situación donde se necesite definir un mínimo y un máximo.

Implementación

Definición del componente

Terminal window
@Composable
fun RangeSlider(
value: ClosedFloatingPointRange<Float>,
onValueChange: (ClosedFloatingPointRange<Float>) -> Unit,
valueRange: ClosedFloatingPointRange<Float> = 0f..1f,
steps: Int = 0,
enabled: Boolean = true,
colors: SliderColors = SliderDefaults.colors()
)

Los parámetros del componente en Material son los siguientes:

AtributoDescripción
valueRangeDefine el rango de valores que el slider puede tomar. En este caso, va desde 0 hasta 100.
valueUna tupla que representa los valores mínimos y máximos del rango seleccionado actualmente por el usuario.
onValueChangeUn callback que se llama cuando el usuario desliza el control deslizante para cambiar los valores seleccionados.
stepsDefine el número de pasos discretos entre los valores mínimos y máximos del rango.
enabledDefine si el slider está habilitado o no.
colorsLos colores del slider en diferentes estados.
onValueChangeFinishedUn callback opcional que se llama cuando el usuario finaliza de cambiar los valores.

Ejemplos

Imagen del componente - Material [RangeSlider]
Terminal window
@Composable
fun RangeSliderExample() {
var sliderPosition by remember { mutableStateOf(0f..100f) }
Column(
modifier = Modifier.padding(16.dp),
horizontalAlignment = Alignment.CenterHorizontally
) {
Text(text = "Selected range: ${sliderPosition.start} - ${sliderPosition.endInclusive}")
RangeSlider(
value = sliderPosition,
onValueChange = { sliderPosition = it },
valueRange = 0f..100f,
steps = 10,
enabled = true,
colors = SliderDefaults.colors()
)
}
}