Компонуемый элемент Slider позволяет пользователям выбирать значения из диапазона. Ползунок можно использовать, чтобы пользователь мог:
- Настраивать параметры, которые имеют диапазон значений, например громкость и яркость.
- Фильтрация данных на графике, например при задании диапазона цен.
- Ввод данных пользователем, например оценка в отзыве.
Ползунок содержит дорожку, бегунок, ярлык значения и деления:
- Ползунок. Горизонтальная полоса, представляющая диапазон значений, которые может принимать ползунок.
- Ползунок. Перетаскиваемый элемент управления на ползунке, позволяющий пользователю выбрать определенное значение в диапазоне, заданном дорожкой.
- Деления. Необязательные визуальные маркеры или индикаторы, которые появляются вдоль дорожки ползунка.
Базовая реализация
Полное описание API приведено в справочнике по Slider. Ниже перечислены основные параметры composable-функции Slider:
value– текущее значение ползунка.onValueChange– лямбда-функция, которая вызывается каждый раз, когда значение меняется.enabled– логическое значение, указывающее, может ли пользователь взаимодействовать со слайдером.
Ниже приведен пример простого слайдера. Пользователь может выбрать значение от 0.0 до 1.0. Поскольку пользователь может выбрать любое значение в этом диапазоне, ползунок является непрерывным.
@Preview @Composable fun SliderMinimalExample() { var sliderPosition by remember { mutableFloatStateOf(0f) } Column { Slider( value = sliderPosition, onValueChange = { sliderPosition = it } ) Text(text = sliderPosition.toString()) } }
Вот как это будет выглядеть:
Расширенная реализация
При создании более сложного слайдера можно также использовать следующие параметры:
colors– экземплярSliderColors, позволяющий управлять цветами ползунка.valueRange– диапазон значений, которые может принимать ползунок.steps– количество делений на ползунке, к которым прилипает бегунок.
В приведенном ниже фрагменте кода реализован ползунок с тремя шагами и диапазоном от 0.0 до 50.0. Поскольку ползунок переходит к каждому шагу, он дискретный.
@Preview @Composable fun SliderAdvancedExample() { var sliderPosition by remember { mutableFloatStateOf(0f) } Column { Slider( value = sliderPosition, onValueChange = { sliderPosition = it }, colors = SliderDefaults.colors( thumbColor = MaterialTheme.colorScheme.secondary, activeTrackColor = MaterialTheme.colorScheme.secondary, inactiveTrackColor = MaterialTheme.colorScheme.secondaryContainer, ), steps = 3, valueRange = 0f..50f ) Text(text = sliderPosition.toString()) } }
Реализация выглядит следующим образом:
Ползунок для выбора диапазона
Также можно использовать специальный компонент RangeSlider. Это позволит пользователю выбрать два значения. Это может быть полезно, например, когда пользователь хочет выбрать минимальную и максимальную цену.
Ниже приведен относительно простой пример непрерывного ползунка.
@Preview @Composable fun RangeSliderExample() { var sliderPosition by remember { mutableStateOf(0f..100f) } Column { RangeSlider( value = sliderPosition, steps = 5, onValueChange = { range -> sliderPosition = range }, valueRange = 0f..100f, onValueChangeFinished = { // launch some business logic update with the state you hold // viewModel.updateSelectedSliderValue(sliderPosition) }, ) Text(text = sliderPosition.toString()) } }