上下文
我正在开发一个必须完全可访问的应用程序,为此我需要指定布局的不同 View 的焦点顺序。
我的布局看起来像这样(数字定义焦点顺序,3 是 ListView
,其他是普通 View ):
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 焦点管理器似乎停留在第二个 View 。当焦点到达项目 2 时,焦点不会给予 ListView
,甚至不会给予第 4 个 View 。因为当我的列表不包含任何项目时,我希望焦点直接从 2 转到 4。
问题
我是不是遗漏了什么或者我的代码中的其他东西会产生这种奇怪的行为?
最佳答案
尝试像下面这样以编程方式设置焦点
if(yourListViewAdapter.getCount() <= 0) {
view_2.setNextFocusDownId(R.id.view_4);
}
关于android - ListView为空时如何处理焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41484861/