android适配pad和部分手机底部虚拟按键+沉浸式状态栏
2024-08-28 00:47:52
在使用沉浸式状态栏设置界面全屏时发现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);
}
不过此时界面会向上偏移一个状态栏的高度
最新文章
- memcached服务器
- CENTOS7设置显示中文
- JS-中对表单处理
- WPF简单的口算案例
- mysql 删除日志
- css——基础样式总结
- XHTML 结构化:使用 XHTML 重构网站
- BaseServlet,让一个servlet处理多个请求
- nova创建虚拟机源码分析系列之五 nova源码分发实现
- Android--多线程之AsyncTask
- RefineDet网络简介(转载)
- 时间序列分析 异常分析 stl
- ADB工具的使用
- FortiGate路由模式--静态地址线路上网配置
- Nginx---应用场景小结
- Jmeter的安装和启动错误总结,出现unable to access jarfile apachejmeter.jar error value=1错误处理
- Anaconda多版本Python管理以及TensorFlow版本的选择安装
- MVC 返回对象换成json
- 20155327 2016-2017-3 《Java程序设计》第4周学习总结
- LCA:Tarjan算法实现
热门文章
- Android 自定义 View 知识点
- MySQL创建用户与授权方法实例精讲
- HAProxy压测及参数调优
- 【教程】ubuntu中配置tftp
- visual studio 2005提示脚本错误 /VC/VCWizards/2052/Common.js
- Python3玩转单链表——逆转单向链表pythonic版
- C++中虚函数的作用是什么?它应该怎么用呢?
- 02-老马jQuery教程-jQuery事件处理
- Android Retrofit2 网路编程
- <;孤独者生存(小小辛巴投资手记)>;读书笔记