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

本文介绍了解决Android8.0中View默认焦点高亮的问题。通过禁用默认焦点高亮,确保应用程序在使用键盘导航时的外观一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目在适配 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);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值