How to Use Slider Components in Jetpack Compose (With Usage Examples)

To Use Slider Components in Jetpack Compose

Overview

The Slider composable in Jetpack Compose enables users to select from a range of values, ideal for adjusting settings like volume or brightness, filtering data such as price ranges, or providing input like ratings. The slider includes a track, a draggable thumb, optional tick marks, and a value label.

This guide demonstrates how to implement basic, advanced, and range sliders with customization options and best practices for 2025.

Slider Use Cases Table

Type Usage Examples
Basic Slider Adjust volume, set brightness, select rating
Advanced Slider Discrete steps for specific values, custom tick marks
Range Slider Select price range, filter data by min/max values

Version Compatibility & Dependencies

This implementation requires a minimum SDK of API level 21 (Android 5.0). Add the Compose BOM to your project:


dependencies {
    implementation(platform("androidx.compose:compose-bom:2025.05.00"))
    implementation("androidx.compose.material3:material3")
}
    

Ensure your app uses a Material 3 theme, such as MaterialTheme. Refer to the Material 3 Slider Guidelines for details.

Creating Slider Components in Jetpack Compose

Basic Slider Example

Creates a continuous slider with a range from 0.0 to 1.0.


import androidx.compose.material3.Slider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.remember

@Composable
fun BasicSliderExample() {
    val sliderValue = remember { mutableFloatStateOf(0f) }
    Slider(
        value = sliderValue.value,
        onValueChange = { sliderValue.value = it },
        valueRange = 0f..1f
    )
}
    

Result: A continuous slider allowing selection of any value between 0.0 and 1.0.

Figure 1. A basic implementation of a slider.


Advanced Slider Example

Creates a discrete slider with three steps over a range from 0.0 to 50.0.


import androidx.compose.material3.Slider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.remember

@Composable
fun AdvancedSliderExample() {
    val sliderValue = remember { mutableFloatStateOf(0f) }
    Slider(
        value = sliderValue.value,
        onValueChange = { sliderValue.value = it },
        valueRange = 0f..50f,
        steps = 3
    )
}
    

Result: A discrete slider with four selectable values (0, 12.5, 25, 37.5, 50) due to three steps.

Figure 2. A slider with steps and a set value range.


Range Slider Example

Creates a continuous range slider for selecting a minimum and maximum value.


import androidx.compose.material3.RangeSlider
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.unit.ClosedFloatingPointRange

@Composable
fun RangeSliderExample() {
    val range = remember { mutableStateOf(0f..100f) }
    RangeSlider(
        value = range.value,
        onValueChange = { range.value = it },
        valueRange = 0f..100f
    )
}
    

Result: A range slider allowing selection of a minimum and maximum value between 0.0 and 100.0.

Figure 3. An implementation of a range slider.


Key Points for Implementation

  • value: Defines the current value of the slider (or range for RangeSlider).
  • onValueChange: Callback triggered when the slider value changes.
  • enabled: Determines if the slider is interactive (true) or disabled (false).
  • colors: Customizes thumb and track colors using SliderDefaults.colors.
  • valueRange: Sets the range of selectable values (e.g., 0f..100f).
  • steps: Defines the number of discrete intervals for a slider (excluding start and end).
  • Accessibility: Ensure a 48dp touch target for the thumb and use contentDescription for screen readers.

Theming Sliders

Customize Slider appearance using MaterialTheme in Compose to define a custom color scheme or apply specific colors via SliderDefaults.colors.


import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Slider
import androidx.compose.material3.SliderDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableFloatStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.graphics.Color

@Composable
fun ThemedSliderExample() {
    val sliderValue = remember { mutableFloatStateOf(0f) }
    MaterialTheme(
        colorScheme = MaterialTheme.colorScheme.copy(
            primary = Color(0xFF1767D0)
        )
    ) {
        Slider(
            value = sliderValue.value,
            onValueChange = { sliderValue.value = it },
            valueRange = 0f..100f,
            colors = SliderDefaults.colors(
                thumbColor = Color(0xFF1767D0),
                activeTrackColor = Color(0xFF4A90E2)
            )
        )
    }
}
    

FAQ

What is a Slider component?

A component with a track and draggable thumb for selecting a value or range within defined limits.


Which composable is used for a Slider?

Use Slider for a single-value slider or RangeSlider for selecting a range.


How to make Sliders accessible?

Ensure a 48dp touch target for the thumb and use contentDescription for screen readers.


Can I customize Slider colors?

Yes, via SliderDefaults.colors for thumb and track or a custom MaterialTheme.colorScheme.


What is the minimum SDK required?

API level 21 (Android 5.0).



Post a Comment

Previous Post Next Post