ScrollField:无限滚轮选择器 · AndroidX 源码指南
AAndroidX 源码指南
M3E 设计系统
M3E 设计系统 · androidx.compose.material3

ScrollField:无限滚轮选择器1.5.0-alpha25

使用 ScrollFieldState 创建时间、单位等循环选择器,并保留键盘和无障碍范围信息。

最后更新 2026-07-31

它是什么

ScrollField 基于垂直 Pager 构建循环滚轮,中间项为当前选择。rememberScrollFieldState(itemCount, index) 保存选项数量和初始索引。

val state = rememberScrollFieldState(itemCount = 60)

ScrollField(
    state = state,
    contentDescription = "选择分钟,范围 0 到 59",
)

读取 state.targetOption 获取目标选项;需要主动跳转时使用 state 提供的滚动方法。

contentDescription 为什么重要

滚轮视觉上会无限循环,TalkBack 无法仅从屏幕判断真实边界。源码 KDoc 要求 description 在上下文不明显时包含可用范围,并通过 fieldAccessibilityDescription 描述每一项。

不要自己套 % 就结束

源码还实现了方向键、focus、setProgress semantics 和点击某项后动画居中。自己用 LazyColumn 模仿外观,很容易丢失这些输入方式。

复制即用

0..59 分钟的滚轮选择器:

import androidx.compose.material3.ScrollField
import androidx.compose.material3.rememberScrollFieldState
import androidx.compose.runtime.Composable

@Composable
fun MinutePicker() {
    val state = rememberScrollFieldState(itemCount = 60)

    ScrollField(
        state = state,
        contentDescription = "选择分钟,范围 0 到 59",
    )
}

读取 state.targetOption 获取当前选项;无障碍场景务必提供范围说明。