“默认焦点遍历顺序”部分介绍了 Compose 如何自动为您的元素添加焦点遍历行为,无论是单维(tab
键)还是二维(方向键)导航。在某些情况下,您可能需要覆盖此默认行为,并更明确地说明所需的遍历顺序。
覆盖一维遍历顺序
要更改一维导航的默认焦点遍历顺序,您可以创建一组引用,每个可聚焦组合对应一个引用。
val (first, second, third, fourth) = remember { FocusRequester.createRefs() }
然后,使用 focusRequester
修饰符将每个引用与一个组合关联起来。
Column { Row { TextButton({}, Modifier.focusRequester(first)) { Text("First field") } TextButton({}, Modifier.focusRequester(third)) { Text("Third field") } } Row { TextButton({}, Modifier.focusRequester(second)) { Text("Second field") } TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") } } }
您现在可以使用 focusProperties
修饰符指定自定义遍历顺序。
Column { Row { TextButton( {}, Modifier .focusRequester(first) .focusProperties { next = second } ) { Text("First field") } TextButton( {}, Modifier .focusRequester(third) .focusProperties { next = fourth } ) { Text("Third field") } } Row { TextButton( {}, Modifier .focusRequester(second) .focusProperties { next = third } ) { Text("Second field") } TextButton( {}, Modifier .focusRequester(fourth) .focusProperties { next = first } ) { Text("Fourth field") } } }
覆盖二维遍历顺序
还可以使用方向键对二维导航的焦点遍历顺序进行更细粒度的控制。对于每个元素,您可以通过添加 focusProperties
修饰符并指定向上、向下或任何其他方向将出现的项目,来覆盖每个方向的默认导航目标。
TextButton( onClick = {}, modifier = Modifier .focusRequester(fourth) .focusProperties { down = third right = second } ) {}
此技术不仅有效地使用了键盘方向键,还可以与有线和无线控制器上的 D 形方向键和摇杆配合使用。
为您推荐
- 注意:当 JavaScript 关闭时,将显示链接文本。
- 更改焦点行为
- Compose 中的焦点