Слайдер

Составной Slider позволяет пользователям делать выбор из диапазона значений. Вы можете использовать ползунок, чтобы позволить пользователю делать следующее:

  • Настройте параметры, использующие диапазон значений, таких как громкость и яркость.
  • Фильтруйте данные на графике, как при настройке ценового диапазона.
  • Пользовательский ввод, например установка рейтинга в обзоре.

Ползунок содержит дорожку, ползунок, метку значения и деления:

  • Трек : трек представляет собой горизонтальную полосу, которая представляет диапазон значений, которые может принимать ползунок.
  • Большой палец : Большой палец — это перетаскиваемый элемент управления на ползунке, который позволяет пользователю выбирать определенное значение в диапазоне, определенном дорожкой.
  • Делительные отметки : деления — это дополнительные визуальные маркеры или индикаторы, которые появляются вдоль дорожки ползунка.
Ползунок с большим пальцем, дорожкой и делениями.
Рисунок 1. Реализация слайдера.

Базовая реализация

Полное определение API см. в справочнике Slider . Некоторые из ключевых параметров компонуемого 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())
    }
}

Эта реализация выглядит следующим образом:

Компонент ползунка со значением, выбранным примерно на три четверти вдоль дорожки.
Рисунок 2. Базовая реализация слайдера.

Расширенная реализация

При реализации более сложного слайдера вы можете дополнительно использовать следующие параметры.

  • 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())
    }
}

Реализация выглядит следующим образом:

Напишите здесь свой альтернативный текст
Рисунок 3. Ползунок с шагами и диапазоном заданных значений.

Ползунок диапазона

Вы также можете использовать специальный составной элемент 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())
    }
}

Компонент ползунка диапазона с выбранными двумя значениями. Метка отображает верхнюю и нижнюю границы выделения.
Рисунок 4. Реализация ползунка диапазона.

Дополнительные ресурсы