问题描述
我正在尝试优化 Android 应用中 ChromeO 的焦点变化。我已经读过official docs,codelabs。并发现可以使用 nextFocusForwardId
、nextFocusLeftId
、nextFocusRightId
来管理焦点更改顺序……我试图仅在一个视图中使焦点更改循环。
看看这张照片:
通常,当我按下 Tab
键时,我会浏览按钮菜单,然后离开并浏览覆盖层下方的其余 UI。
当我按下 Right
箭头时,我会立即离开这个菜单。
我正在尝试禁用此场景,并使焦点更改循环。因此,当底部按钮获得焦点时,我按下 Tab
或 Down
,顶部按钮应该获得焦点并忽略其余 ui。
我试过这个功能:
fun makeCyclicFocusChange(viewGroup: ViewGroup) {
for (v in viewGroup.children) {
v.nextFocusLeftId = 0
v.nextFocusRightId = 0
}
viewGroup.children.first{ it.isVisible && it.isFocusable}.nextFocusUpId =
viewGroup.children.last{ it.isVisible && it.isFocusable }.id
viewGroup.children.last{ it.isVisible && it.isFocusable }.nextFocusDownId =
viewGroup.children.first{ it.isVisible && it.isFocusable }.id
viewGroup.children.last{ it.isVisible && it.isFocusable }.nextFocusForwardId =
viewGroup.children.first{ it.isVisible && it.isFocusable }.id
}
但它不起作用。首先,Left
和 Right
箭头仍然会分散注意力。此外,当我在最后一个按钮上按下 Tab
键时,焦点确实转到了第一个按钮,但下一次 Tab
按下仍会将焦点从该菜单上移开。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)