除了软输入方法(如屏幕键盘)之外,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
公众号推荐: