Android 沉浸式状态栏与华为虚拟按键的冲突处理

Android 沉浸式状态栏与华为虚拟按键的冲突处理

最近在写自己的小东西的时候,遇到了一个Bug,就是沉浸式转态栏与华为虚拟按键的冲突的问题。
先看一下出现问题的图
这里写图片描述

然后根据网上的一些办法 最多的就是告诉你,在布局文件加这个2个属性

  android:fitsSystemWindows="true"
    android:clipToPadding="true"

这个是我的布局

<?xml version="1.0" encoding="utf-8"?>
<com.zhy.autolayout.AutoLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:fitsSystemWindows="true"
    android:clipToPadding="true"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/layFrame"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:id="@+id/bottom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom" />
</com.zhy.autolayout.AutoLinearLayout>

然后大家看一下效果 =_=! 虚拟按键是是跑到最下面了,我那个沉浸式状态栏是怎么回事??还有那个虚拟按键居然是透明的,而且那么丑

这里写图片描述

然后网上又有人说,把XML里面的两个属性去掉,还有把那个沉浸式状态栏的属性也去掉

    android:fitsSystemWindows="true"
    android:clipToPadding="true"

这句也要注释掉
// activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); 去掉这句 防止沉浸式状态栏与虚拟按键冲突

  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            return this;
        } else {
            mToolbar.setPadding(0, SystemView.getStatusBarHeight(activity) >> 1, 0, 0);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

          //  activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);  去掉这句 防止沉浸式状态栏与虚拟按键冲突


        } else {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        }

看看效果

这里写图片描述

完美处理!

至于我的沉浸式状态栏会变色,是根据Tablayout来设置的

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2847.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单理解Binder机制的原理

    一、概述Android系统中,涉及到多进程间的通信底层都是依赖于BinderIPC机制。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于BinderIPC。不仅于此,整个Android系统架构中,大量采用了Binder机制作为IPC(进程间通信)方案。当然也存在部分其他的IPC方式,如管道、SystemV、Socket等。那么Android为什么不使用这…

    2022年4月6日
    38
  • VeryCD转型的应对措施,让我们继续分享互联网!!!

    VeryCD转型的应对措施,让我们继续分享互联网!!!
    昨天在家里,看着电影听着歌,忽然VeryCD就被和谐了!有电驴的日子才是好日子啊!我还想下【告白】呢!我还想下【大地惊雷】呢!……
    已经有不少同学注意到了,VeryCD的音乐区被和谐了,电影区和剧集区也不提供下载链接了,俨然变成一个在线视频网站。那么高清电影、剧集,音乐专辑、电影原声就此离我们远去了?不!
    VeryCD怂掉也是迟早的事儿,它在中国光明正大的推广盗版如此之久已经是一个奇迹了,但VC倒了并不会影响我们下载emule资源。简单来说VeryCD是一个商业公司,

    2022年7月15日
    18
  • IDEA卸载和删除注册表

    IDEA卸载和删除注册表当我们在用idea的时候,idea的环境出现了莫名其妙的问题,怎么也找不到问题原因的时候可以试着把idea卸载重新安装。但是如果你卸载的时候没有删除干净注册表里的信息。就算再次安装回来也还是解决不了问题。如何删除干净IDEA1.卸载程序打开控制面板,选中idea点击卸载;2.删除注册表windows+R输入regedit进入注册表,右键一级菜单HKEY_CURRENT_USER,右键查找,输入idea,会找到jetbrains,…

    2022年6月29日
    548
  • python 将读取的数据写入txt文件_c中怎样将数据写入txt文件

    python 将读取的数据写入txt文件_c中怎样将数据写入txt文件#前面省略,从下面直奔主题,举个代码例子:result2txt=str(data)#data是前面运行出的数据,先将其转为字符串才能写入withopen(‘结果存放.txt’,’a’)asfile_handle:#.txt可以不自己新建,代码会自动新建file_handle.write(…

    2022年10月2日
    2
  • widthstep

    widthstep简言之:image->widthStep=(int(image->width*image->nChannels+3)/4)*4,既图像宽度*图像通道数,再向上取最近的4的倍数,因为每行是按4的倍数分配内存的做直方图计算时要注意空的内存。灰度图的width和widthstep不相等。前者是表示图像的每行像素数,后者指表示存储一行像素需要的字节数。  在Op

    2022年6月12日
    41
  • 编译QCAD_qt 编译

    编译QCAD_qt 编译开源二维CAD程序QCAD的编译说明。

    2022年8月4日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号