在使用沉浸式状态栏设置界面全屏时发现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);

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

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);
}

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

最新文章

  1. memcached服务器
  2. CENTOS7设置显示中文
  3. JS-中对表单处理
  4. WPF简单的口算案例
  5. mysql 删除日志
  6. css——基础样式总结
  7. XHTML 结构化:使用 XHTML 重构网站
  8. BaseServlet,让一个servlet处理多个请求
  9. nova创建虚拟机源码分析系列之五 nova源码分发实现
  10. Android--多线程之AsyncTask
  11. RefineDet网络简介(转载)
  12. 时间序列分析 异常分析 stl
  13. ADB工具的使用
  14. FortiGate路由模式--静态地址线路上网配置
  15. Nginx---应用场景小结
  16. Jmeter的安装和启动错误总结,出现unable to access jarfile apachejmeter.jar error value=1错误处理
  17. Anaconda多版本Python管理以及TensorFlow版本的选择安装
  18. MVC 返回对象换成json
  19. 20155327 2016-2017-3 《Java程序设计》第4周学习总结
  20. LCA:Tarjan算法实现

热门文章

  1. Android 自定义 View 知识点
  2. MySQL创建用户与授权方法实例精讲
  3. HAProxy压测及参数调优
  4. 【教程】ubuntu中配置tftp
  5. visual studio 2005提示脚本错误 /VC/VCWizards/2052/Common.js
  6. Python3玩转单链表——逆转单向链表pythonic版
  7. C++中虚函数的作用是什么?它应该怎么用呢?
  8. 02-老马jQuery教程-jQuery事件处理
  9. Android Retrofit2 网路编程
  10. <孤独者生存(小小辛巴投资手记)>读书笔记