安卓8.1状态栏沉浸并保证布局不和虚拟键重叠的办法

对于 android5.0 以上的状态栏沉浸方法,我看到的大部分说法是下面的style

1

2

3

4

5

6

7

8

9

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

        <!-- Customize your theme here. -->

        <item name="colorPrimary">@color/colorPrimary</item>

        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

        <item name="colorAccent">@color/colorAccent</item>

        <item name="android:windowTranslucentStatus">false</item>

        <item name="android:windowTranslucentNavigation">true</item>

        <item name="android:statusBarColor">@android:color/transparent</item>

    </style>

  

刚开始我也是这么用的,似乎没有什么问题,但是后来发现在有底部虚拟按键的设备上,我的应用布局会和三个虚拟按键重叠,但是我想要的效果是我的布局在虚拟键之上

于是我去掉了这句话

1

<item name="android:windowTranslucentNavigation">true</item>

  

然后我的状态栏却不再沉浸了,不太清除这句话为什么会影响状态栏,看起来好像只会影响底部虚拟键的样子

 

于是另找解决办法,实现了沉浸状态栏的同时布局位于虚拟键之上

核心代码如下,java代码和item需要同时使用

代码中加上这段代码

1

2

3

4

5

6

7

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) try {

            Class decorViewClazz = Class.forName("com.android.internal.policy.DecorView");

            Field field = decorViewClazz.getDeclaredField("mSemiTransparentStatusBarColor");

            field.setAccessible(true);

            field.setInt(getWindow().getDecorView(), Color.TRANSPARENT);  //改为透明

        catch (Exception e) {

        }

  

style中加上下面的item

1

<item name="android:windowTranslucentStatus">true</item>

 

转自:https://www.cnblogs.com/liupy/p/9448260.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值