Android(安卓)完美解决各个版本状态栏设置透明解决办法
16lz
2021-01-25
最近做的项目,在小米手机上运行,设置全透明没有问题,但是在华为手机上,设置了并没有效果,最终找到解决方案,如下代码:
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) void translucentStatusBar(Activity activity, boolean hideStatusBarBackground) { Window window = activity.getWindow(); //添加Flag把状态栏设为可绘制模式 window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); if (hideStatusBarBackground) { //如果为全透明模式,取消设置Window半透明的Flag window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //设置状态栏为透明 window.setStatusBarColor(Color.TRANSPARENT); //设置window的状态栏不可见 window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);// window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); } else { window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.setStatusBarColor(Color.TRANSPARENT); } //view不根据系统窗口来调整自己的布局 ViewGroup mContentView = (ViewGroup) window.findViewById(Window.ID_ANDROID_CONTENT); View mChildView = mContentView.getChildAt(0); if (mChildView != null) { ViewCompat.setFitsSystemWindows(mChildView, false); ViewCompat.requestApplyInsets(mChildView); } }
更多相关文章
- No.11 使用firewall配置的防火墙策略的生效模式
- Android(安卓)Canvas设置绘画时重叠部分的处理模式【含效果图】
- Android(安卓)Activity
- Android底部导航BottomNavigationBar的基本使用(谷歌推荐)
- Android(安卓)四大组件之Activity(Activity/Fragment)
- 【Android】 adb shell 下 setting 指令
- Android(安卓)Service之onStartCommand方法研究
- 三行代码实现白天夜间模式流畅切换的实现库
- Android(安卓)插件化分析(2)- 动态代理