Android 虚拟按键与沉浸式的适配方法
作者:lingfeixiang 发布时间:2021-11-27 22:03:02
根据公司产品的要求,app要实现全屏模式,也就是4.4以后的所谓的沉浸式。
在values-v19和values-v21的styles里添加以下代码,实现19以上的系统的沉浸式:
<style name="AppBaseTheme" parent="android:Theme.Holo.Light.NoActionBar.TranslucentDecor">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
TranslucentDecor,是KitKat及以上版本加入的theme包,用于把布局顶到状态栏(Status Bar)和导航栏(Navigation Bar)上,扩展屏幕高度。这样,只要我们把Status Bar和Navigation Bar的颜色设置成透明,那就可以实现app的全屏而又不影响状态栏和导航栏了。如图:
那么,问题来了。加入直接这样设置,手机使用虚拟按键的,像华为各种型号的手机,布局和Navigation Bar会重叠导致冲突,比如这样:
而且,不适配4.4以下的系统。
为了解决问题,查看了很多资料,也自己尝试了一下,发现很多方法都不适合。后来尝试了一下,低于4.4的版本,也就是values下的styles,直接把parent的值,设置成NoTitleBar或者其它的兼容4.4以下版本的Theme(当然,4.4以下的系统,没办法实现沉浸式),然后values-v19和v21的保持TranslucentDecort实现沉浸式。
看了很多网友的资料,有人尝试在layout的总布局里设置android:fitsSystemWindows="true",但这样子Status Bar也就废了,这不是我们想要的。
把values-v19和v21的styles里的
<item name="android:windowTranslucentNavigation">false</item>
设置成false,尝试了一下,成功了。带有虚拟按键的系统,自动把布局顶上去了。
来源:https://blog.csdn.net/lingfeixiang/article/details/56665722


猜你喜欢
- 本文实例讲述了java实现Xml与json之间的相互转换操作。分享给大家供大家参考,具体如下:旁白:最近关于xml与json之间的转换都搞蒙
- 在Android开发中在所难免的会出现程序crash,俗称崩溃。用户的随意性访问出现测试时未知的Bug导致我们的程序crash,此时我们是无
- 本项目主要实现对汽车维修厂的信息化管理功能,主要包含三个角色:管理员,维修师傅,客户。实现的主要功能包含用户管理、配置管理、汽车管理、故障管
- 1、效果展示2、布局文件<?xml version="1.0" encoding="utf-8"
- 本文实例讲述了C#简单实现防止多个程序运行的方法。分享给大家供大家参考,具体如下:/// <summary>/// 应用程序的主
- 之前学习 Java 的时候,感觉最难做的一件事情就是配置 jdk 的环境。那叫一个困难啊,Path, JAVA_HOME, CLASSPAT
- 本文实例讲述了Android编程实现点击EditText之外的控件隐藏软键盘功能。分享给大家供大家参考,具体如下:工具类...public
- 一、什么是委托呢?听着名字挺抽象,确实不好理解。面试官最喜欢考察这个,而且更喜欢问:“委托和事件有何异同?”。如果对一些知识点没有想明白,那
- 本文实例为大家分享了java web个人通讯录系统的具体代码,供大家参考,具体内容如下现在开始上截图:下面粘贴代码:首先是目录结构:<
- 配置文件context-path的坑context-path: /manage 这个配置加入后会导致访问spring的页面都需要加这个/ma
- 找到framework/base/core/res/res/values/dimens.xml,在其中把Navigation的配置改成0 &
- Activity设置全屏和无标题栏,要用到andorid.view.Window和Android.view.WindowManager。 W
- 界面中控件较多的话,每个控件都设置setOnClickListener(this)是很麻烦的,为此抽出了一个Context的扩展类:fun
- 顺序结构我们之前写的大多代码都是顺序结构的,即按照代码的顺序一行一行的执行代码1 System.out.println("you&
- 一:获取根目录的方法取得控制台应用程序的根目录方法方法1、Environment.CurrentDirectory 取得或设置当前工作目录的
- 今天下了个新浪微博的API研究研究,目前实现了发布微博功能,包括带图片的微博。为了安全,新浪微博的API中并没有提供用微博帐号密码登录的功能
- 最新对文件的操作比较频繁。这里记录一下常用的几种文件读写的方式。我这里使用窗体来做测试。1:二进制读写/// <summary>
- 概述一般我们在向文档添加水印时,会分为直接添加文字水印和加载图片添加图片水印两种情况。常见的,在添加文字水印时会多以声明文档版权、权威性的文
- 前言跳过废话,直接看正文当年入坑Java是因为它的跨平台优势。那时我认为,”编写一次,处处运行。”这听上去多么牛逼,应该是所有语言发展的终极
- 本文实例讲述了C#处理Paint事件的方法。分享给大家供大家参考。具体方法如下:using System;using System.Coll