语境
我正在开发一个必须完全可访问的应用程序,为此我需要指定布局的不同视图的焦点顺序。
我的布局看起来像这样(数字定义焦点顺序,3是ListView
常见的视图):
XML的相关部分(考虑到我使用nextFocusDown
而不是nextFocusForward
故意满足我的需要):
<View
android:id="@+id/view_1"
android:nextFocusDown="@+id/view_2" />
<View
android:id="@+id/view_2"
android:nextFocusDown="@android:id/list" />
<ListView
android:id="@android:id/list"
android:nextFocusDown="@+id/view_4" />
<View
android:id="@+id/view_4"
android:nextFocusDown="@+id/view_1" />
当 ListView 充满项目时,这很有效,焦点按预期运行。1 ⇒ 2 ⇒ 3(逐项)⇒ 4 ⇒ 1 ... 以此类推。
问题
现在,当我ListView
为空时,Android 焦点管理器似乎卡在第二个视图上。当焦点到达第2项时,焦点不会被给予ListView
甚至更少的第 4 个视图。因为当我的列表不包含任何项目时,我希望焦点直接从2变为4。
问题
我是否遗漏了什么或者我的代码中的其他东西会产生这种奇怪的行为?