zoukankan      html  css  js  c++  java
  • android适配pad和部分手机底部虚拟按键+沉浸式状态栏

    在使用沉浸式状态栏设置界面全屏时发现pad和部分手机(华为和魅族系统自带)屏幕底部会带有虚拟按键,遮挡住界面本身的一部分。

    为了设置隐藏,在网上找了一些方法,设置Activity主题再在布局加fitsSystemWindows,或者在AndroidManifest里设置主题样式加android:windowDrawsSystemBarBackgrounds。这些设置是可以隐藏底部按键,但同时也使我之前设置的沉浸式状态栏失效。

    下面两种会隐藏按键,如果需要可以直接设置在activity中。

    第一种:始终隐藏,触摸屏幕时也不出现——

            WindowManager.LayoutParams params = getWindow().getAttributes();
            params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;
            getWindow().setAttributes(params);

    第二种:隐藏了,但触摸屏幕时出现——

            WindowManager.LayoutParams params = getWindow().getAttributes();
            params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
            getWindow().setAttributes(params);

     但问题是这些虚拟按键有时候其实是需要用到的,所以为了显示沉浸状态栏又保留原来的按键,最后使用了这种方法:

     1 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
     2     Window window = getWindow();
     3     window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
     4             | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
     5     window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
     6             | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
     7             | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
     8     window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
     9     window.setStatusBarColor(Color.TRANSPARENT);
    10     window.setNavigationBarColor(Color.TRANSPARENT);
    11 } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
    12     WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
    13     localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
    14 }

    不过此时界面会向上偏移一个状态栏的高度

  • 相关阅读:
    【转】主从同步出现一下错误:Slave_IO_Running: Connecting
    解决Mysql的主从数据库没有同步的两种方法
    xargs命令详解,xargs与管道的区别
    常用的排序算法的时间复杂度和空间复杂度
    IP 地址分类(A、B、C、D、E类)
    SNMP 协议介绍 转载
    TCP首部的TimeStamp时间戳选项 转载
    TCP SACK 介绍 转载
    HTTP header 介绍 转载
    CRT小键盘输入乱码
  • 原文地址:https://www.cnblogs.com/Sharley/p/7650922.html
Copyright © 2011-2022 走看看