ListView为空时如何处理焦点

时间:2017-01-05 12:13:56

标签: android listview focus accessibility android-accessibility

上下文

我正在开发一个必须完全可访问的应用,因为我需要指定布局不同视图的焦点顺序。

我的布局如下所示(数字定义焦点顺序, 3 ListView,其他是常见视图):

My Layout

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

问题

我是否遗漏了某些内容,或者我的代码中的其他内容是否会产生这种奇怪的行为?

1 个答案:

答案 0 :(得分:2)

尝试按照下面的方式设置焦点

if(yourListViewAdapter.getCount() <= 0) {
     view_2.setNextFocusDownId(R.id.view_4);
}