9

我有四个 TextView,我试图控制当用户使用 TalkBack 和触摸手势导航时它们获得焦点的顺序。

TextView android:text="foo" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@+id/id_foo" android:nextFocusDown="@+id/id_baz"/>

TextView android:text="bar" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@+id/id_bar" android:nextFocusDown="@+id/id_qux"/>

TextView android:text="baz" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@id/id_baz" android:nextFocusDown="@id/id_bar"/>

TextView android:text="qux" android:clickable="false" android:focusable="true" android:focusableInTouchMode="true" android:id="@id/id_qux" android:nextFocusDown="@id/id_foo"/>

当用户打开 TalkBack,触摸“foo”,然后向下滑动以在 TextView 之间导航时,我希望顺序为 foo->baz->bar->qux。但是,我尝试使用 nextFocusDown 设置的顺序似乎没有效果,相反,焦点顺序总是跟随屏幕上 TextViews 的位置。我已经尝试了可点击、可聚焦和可聚焦InTouchMode 的所有可能组合。我试过在代码中的视图上调用 setNextFocusDownId 。我尝试在 TextViews 上设置 android:imeOptions="actionNext"。似乎没有任何效果。我错过了什么?

4

2 回答 2

4

尝试使用View.setAccessibilityTraversalAfter(int)View.setAccessibilityTraversalBefore(int)来配置 TalkBack 导航。请注意,TalkBack 只有两个方向:

  • 向前(向右或向下滑动)
  • 返回(向左或向上滑动)。

例子:

findView(R.id.bar).setAccessibilityTraversalBefore(R.id.quix);
于 2015-08-14T20:10:23.640 回答
3

NextFocusDown 不涉及 TalkBack 手势。它指的是轨迹球和键盘箭头键导航。TalkBack 探索手势仅限于向下/向右滑动以获得下一个焦点,以及向上/向左滑动以获得上一个焦点。当然,拖动探索。

于 2015-02-12T16:01:00.460 回答