【Touch&input 】支持键盘导航(13)

除了软输入方法(如屏幕键盘)之外,Android还支持连接到设备的物理键盘。键盘不仅提供了方便的文本输入模式,还为用户提供了一种浏览和与应用程序交互的方式。尽管手机等大多数手持设备都将触控用作互动的主要模式,但平板电脑和类似设备越来越受欢迎,许多用户喜欢附加键盘附件。

随着更多Android设备提供这种体验,重要的是您优化您的应用程序以支持通过键盘进行交互。本课介绍如何使用键盘更好地支持导航。

注意: 支持应用程序中的方向导航对于确保您的应用程序 对于不使用视觉提示进行导航的用户可访问也很重要。在您的应用程序中完全支持定向导航还可以帮助您使用uiautomator等工具自动执行用户界面测试。

请参阅以下相关资源:

实现无障碍

测试你的应用


用户可能已经可以使用键盘来浏览您的应用程序,因为Android系统默认启用了大部分必要的行为。

Android框架提供的所有交互式小部件(例如Button 和EditText)都是可以聚焦的。这意味着用户可以使用控制设备(例如D-pad或键盘)进行导航,并且每个小部件在获得输入焦点时发光或改变其外观。

测试你的应用程序:

1.在提供硬件键盘的设备上安装您的应用程序。
如果您没有带键盘的硬件设备,请连接蓝牙键盘或USB键盘(尽管并非所有设备都支持USB附件)。

您也可以使用Android模拟器:

a.在AVD管理器中,单击新建设备或选择现有配置文件,然后单击克隆。
b.在出现的窗口中,确保键盘和 DPad已启用。

2.要测试您的应用程序,请仅使用Tab键在您的用户界面中进行导航,确保每个用户界面控件按照预期获得焦点。
寻找焦点以您不期望的方式移动的任何实例。

3.从应用程序的开始处开始,改为使用方向控件(键盘上的箭头键)来导航您的应用程序。
从UI中的每个可聚焦元素中,按向上,向下,向左和向右。

寻找焦点以您不期望的方式移动的任何实例。

如果您遇到使用Tab键或方向控件进行导航的任何情况不符合您的期望,请指定焦点应放置在布局中的位置,如以下各节所述

处理选项卡导航


当用户使用键盘Tab键导航您的应用时,系统会根据它们在布局中出现的顺序在元素之间传递焦点。例如,如果使用相对布局,并且屏幕上元素的顺序与文件中的顺序不同,则可能需要手动指定焦点顺序。

例如,在以下布局中,两个按钮与右侧对齐,并且文本字段与第二个按钮的左侧对齐。为了将焦点从第一个按钮传递到文本字段,然后到第二个按钮,布局需要为每个具有以下android:nextFocusForward属性的可聚焦元素显式定义焦点顺序

<RelativeLayout ...>
    <Button
        android:id="@+id/button1"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:nextFocusForward="@+id/editText1"
        ... />
    <Button
        android:id="@+id/button2"
        android:layout_below="@id/button1"
        android:nextFocusForward="@+id/button1"
        ... />
    <EditText
        android:id="@id/editText1"
        android:layout_alignBottom="@+id/button2"
        android:layout_toLeftOf="@id/button2"
        android:nextFocusForward="@+id/button2"
        ...  />
    ...
</RelativeLayout>

现在,而不是从发送聚焦button1到button2然后editText1,焦点根据在屏幕上的外观适当地移动:从 button1到editText1然后button2。

处理定向导航


用户还可以使用键盘上的箭头键导航您的应用程序(行为与使用D-pad或轨迹球进行导航时的行为相同)。系统根据屏幕上的视图布局提供最佳猜测,以便在给定的方向上应该给予哪个视图焦点。然而,有时系统可能会猜错。

如果系统在给定方向导航时没有将焦点传递给适当的视图,请使用以下属性指定哪个视图应该获得焦点:

  • android:nextFocusUp
  • android:nextFocusDown
  • android:nextFocusLeft
  • android:nextFocusRight

每个属性都指定下一个视图,以便在用户按照该视图ID指定的方向导航时接收焦点。例如:

<Button
    android:id="@+id/button1"
    android:nextFocusRight="@+id/button2"
    android:nextFocusDown="@+id/editText1"
    ... />
<Button
    android:id="@id/button2"
    android:nextFocusLeft="@id/button1"
    android:nextFocusDown="@id/editText1"
    ... />
<EditText
    android:id="@id/editText1"
    android:nextFocusUp="@id/button1"
    ...  />
Lastest Update:2018.04.17

联系我

QQ:94297366
微信打赏:https://pan.baidu.com/s/1dSBXk3eFZu3mAMkw3xu9KQ

公众号推荐:

【Touch&input 】支持键盘导航(13)

猜你喜欢

转载自blog.51cto.com/4789781/2125390
今日推荐