让代码更简单

Android6.0以后的任务栏沉浸实现方法

重要:本文最后更新于2022-11-08 19:25:00,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

我这种野生安卓开发者图省事经常喜欢用别人的框架,比如腾讯的QMUI,但又不喜欢深究,所以在出现BUG的时候就尴尬了。前几天在开发一款安卓APP的时候就遇到了一个问题,QMUI的沉浸任务栏与WebView控件中的编辑框冲突,导致APP标题栏异常。为了解决这个问题,我直接放弃该框架。原因主要有两个,一个是这个bug有点难搞,复制官方demo都会出现。二是我的APP仅仅只用到了沉浸任务栏而已,因此我选择使用安卓原生的任务栏沉浸。

Android6.0之后的任务栏沉浸实现方法

Android6.0以后的任务栏沉浸实现方法

实现方法很简单,只需四步。使用的编译器是谷歌的Android Studio

首先在安卓应用的styles.xml文件中添加如下配置

复制
<style name="FullScreen" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
</style>

然后在AndroidManifest.xml文件中给你需要任务栏沉浸的Activity应用上面的配置,例如给WebActivity添加

复制
<activity
    android:name=".WebActivity"
    android:theme="@style/FullScreen"
    />

然后在布局文件中给最外层布局添加如下属性,注意:如果出现标题栏异常或者内容跑到标题栏上的情况,可以将内层属性也设置上。

复制
android:fitsSystemWindows="true"

最后在目标Activity的Java代码中的onCreate方法中使用如下代码,应该在加载布局文件之后使用。

复制
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    getWindow().setStatusBarColor(getResources().getColor(R.color.app_color_blue));
}

注意判断该代码执行的安卓版本,安卓6.0应大于API级别23,6.0之前的沉浸都是假沉浸,且目前安卓6.0一下版本的机器较少,直接放弃适配。

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐