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 获取当前选项;无障碍场景务必提供范围说明。