Suwak

Funkcja kompozycyjna Slider umożliwia użytkownikom wybór wartości z zakresu. Możesz użyć suwaka, aby pozwolić użytkownikowi na:

  • Dostosuj ustawienia używające zakresu wartości, takich jak głośność i jasność.
  • Filtrowanie danych na wykresie, podobnie jak przy ustalaniu przedziału cenowego.
  • Dane wejściowe użytkownika, np. ocena w opinii.

Suwak zawiera ścieżkę dźwiękową, ikonę kciuka, etykietę wartości i znaczniki:

  • Ścieżka: poziomy pasek reprezentujący zakres wartości, które może przyjmować suwak.
  • Kciuk: kciuk to przeciągnięty element sterujący na suwaku, który pozwala użytkownikowi wybrać konkretną wartość w zakresie określonym przez ścieżkę.
  • Znaczniki: to opcjonalne znaczniki wizualne lub wskaźniki widoczne na ścieżce suwaka.
Suwak ze znacznikami kciuka, ścieżki i znaczników.
Rysunek 1. Implementacja suwaka.

Implementacja podstawowa

Pełną definicję interfejsu API znajdziesz w dokumentacji Slider. Oto niektóre kluczowe parametry funkcji kompozycyjnej Slider:

  • value – bieżąca wartość suwaka.
  • onValueChange: funkcja lambda, która jest wywoływana przy każdej zmianie wartości.
  • enabled: wartość logiczna wskazująca, czy użytkownik może wchodzić w interakcję z suwakiem.

Poniższy przykład to prosty suwak. Dzięki temu użytkownik może wybrać wartość od 0.0 do 1.0. Użytkownik może wybrać dowolną wartość z tego zakresu, więc suwak jest ciągły.

@Preview
@Composable
fun SliderMinimalExample() {
    var sliderPosition by remember { mutableFloatStateOf(0f) }
    Column {
        Slider(
            value = sliderPosition,
            onValueChange = { sliderPosition = it }
        )
        Text(text = sliderPosition.toString())
    }
}

Implementacja wygląda tak:

Komponent suwaka z wartością wybraną w około trzech czwartych wzdłuż ścieżki.
Rysunek 2. Podstawowa implementacja suwaka.

Implementacja zaawansowana

Jeśli chcesz zastosować bardziej złożony suwak, możesz też użyć tych parametrów:

  • colors: instancja SliderColors, która umożliwia sterowanie kolorami suwaka.
  • valueRange: zakres wartości, które może przyjmować suwak.
  • steps: liczba otworów na suwaku, do których kciuk jest przyciągany.

Ten fragment kodu zawiera suwak, który składa się z 3 kroków i mieści się w zakresie od 0.0 do 50.0. Ten suwak jest dyskretny, ponieważ kciuk jest przyciągany do każdego kroku.

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

Implementacja wygląda tak:

Wpisz tutaj swój tekst alternatywny
Rysunek 3. Suwak z krokami i określonym zakresem wartości.

Suwak zakresu

Możesz też użyć dedykowanej funkcji kompozycyjnej RangeSlider. Dzięki temu użytkownik może wybrać 2 wartości. Jest to przydatne np. wtedy, gdy użytkownik chce wybrać cenę minimalną i maksymalną.

Poniższy przykład jest stosunkowo prostym przykładem suwaka stałego zakresu.

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

Komponent suwaka zakresu z zaznaczonymi 2 wartościami. Etykieta wskazuje górną i dolną granicę zaznaczenia.
Rysunek 4. Implementacja suwaka zakresu.

Dodatkowe materiały