Skip to content

滑块 (Slider)

源:Sliders

滑块允许用户从一系列值中进行选择。M3 提供了三种变体。

滑块类型

  1. Standard (标准型): 单个控制滑块。
  2. Centered (居中型): 以零为中心的双向滑块。
  3. Range (范围型): 包含两个控制点,用于选择区间。

核心结构 (Anatomy)

结构图

  1. 数值指示器 (Tooltip) | 2. 停止点 (Stops) | 3. 活动轨道 | 4. 手柄 (Handle) | 5. 非活动轨道

代码实现

1. 基础滑块 (Slider)

xml
<com.google.android.material.slider.Slider
    android:id="@+id/slider"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:valueFrom="0.0"
    android:valueTo="100.0"
    android:stepSize="10.0" />
kotlin
slider.addOnChangeListener { slider, value, fromUser ->
    // 响应值改变
}

2. 范围滑块 (RangeSlider)

xml
<com.google.android.material.slider.RangeSlider
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:valueFrom="0.0"
    android:valueTo="100.0"
    app:values="@array/initial_values" />

核心属性

属性描述默认值
app:trackHeight轨道厚度16dp
app:thumbWidth手柄宽度4dp
app:labelBehavior数值气泡行为 (floating, visible, gone)floating

格式化数值 (LabelFormatter)

你可以自定义气泡中显示的文本格式(如:将 1500.0 转换为 $1.5k)。

kotlin
slider.setLabelFormatter { value ->
    NumberFormat.getCurrencyInstance().format(value.toDouble())
}