您的位置:首页 > 移动开发 > Android开发

Android 8.0 更新-----输入和导航

2017-12-26 20:22 232 查看
项目在适配 Android8.0 的时候,进入每个界面之后第一个View会有获取焦点的效果,虽然没什么实质性的影响,但是看着就让人难受,作为一个有梦想的程序员,怎么能够容忍这种事情呢??于是乎我就查找Android 8.0的官方更新文档,功夫不负有心人,最终让我找到了一个我感觉唯一有可能导致这个效果的更新。于是乎我就根据更新做了相应的修改,好了,就这么的好了,开心开心开心。。。。下面我们来看看相关的更新:

随着 Android 应用出现在 Chrome 操作系统和平板电脑等其他大尺寸设备上,我们看到,用户在 Android 应用中又重新开始使用键盘导航。在 Android 8.0 中,我们又再次使用键盘作为导航输入设备,从而为基于箭头键和 Tab 键的导航构建了一种更可靠并且可预测的模型。

尤其要指出的是,我们对元素焦点行为做出以下变更:

现在,如果您没有为 View 对象(前景或背景图片)定义任何焦点状态颜色,框架会为 View 设置默认的焦点突出显示颜色。此焦点突出显示标志是基于操作组件主题背景的涟漪图片。

如果您不希望 View 对象在接收焦点时使用此默认突出显示标志,请在包含 View 的布局 XML 文件中将
android:defaultFocusHighlightEnabled
属性设置为 false,或者将 false 传递至应用界面逻辑中的
setDefaultFocusHighlightEnabled()


要测试键盘输入对界面元素焦点有何影响,您可以启用 Drawing > Show layout bounds 开发者选项。在 Android 8.0 中,此选项在当前具有焦点的元素上显示一个“X”图标。

另外,Android 8.0 中的所有工具栏元素自动组成键盘导航键区,用户可以更加轻松地导航进入和离开每个作为一个整体的工具栏。

如需详细了解如何在您的应用中改善对键盘导航的支持,请阅读支持键盘导航指南。

于是乎,我在BaseActivity的onCreate()中加入下面代码,就一切都好了。。

private void setRootViewDefaultFocusHighlight () {
View root = ((ViewGroup)findViewById(android.R.id.content)).getChildAt(0);
root.setFocusable(true);
root.setFocusableInTouchMode(true);
root.requestFocus();
root.requestFocusFromTouch();
//此方法只能在Android O上使用
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
root.setDefaultFocusHighlightEnabled(false);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 焦点 Android-O
相关文章推荐