android适配pad和部分手机底部虚拟按键+沉浸式状态栏
2017-10-11 15:39
519 查看
在使用沉浸式状态栏设置界面全屏时发现pad和部分手机(华为和魅族系统自带)屏幕底部会带有虚拟按键,遮挡住界面本身的一部分。
为了设置隐藏,在网上找了一些方法,设置Activity主题再在布局加fitsSystemWindows,或者在AndroidManifest里设置主题样式加android:windowDrawsSystemBarBackgrounds。这些设置是可以隐藏底部按键,但同时也使我之前设置的沉浸式状态栏失效。
下面两种会隐藏按键,如果需要可以直接设置在activity中。
第一种:始终隐藏,触摸屏幕时也不出现——
第二种:隐藏了,但触摸屏幕时出现——
但问题是这些虚拟按键有时候其实是需要用到的,所以为了显示沉浸状态栏又保留原来的按键,最后使用了这种方法:
不过此时界面会向上偏移一个状态栏的高度
为了设置隐藏,在网上找了一些方法,设置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 }
不过此时界面会向上偏移一个状态栏的高度
相关文章推荐
- Android带虚拟按键的手机不认res/values的屏幕适配解决方案
- Android 虚拟按键与沉浸式的适配方法
- 解决Android 沉浸式状态栏和华为虚拟按键冲突问题
- [置顶] Android 如何做到隐藏手机底部虚拟按键?
- 浅谈android如何同时适配pad和手机
- 关于Android适配华为等带有底部虚拟按键的解决方案
- android沉浸式状态栏和虚拟按键
- android 解决底部navigation与手机虚拟按键重叠问题
- 初学者---Android 沉浸式(透明)状态栏适配
- Android底部菜单栏、Android沉浸式状态栏(顶部状态栏修改颜色)、自定义标题栏
- Android沉浸式状态栏适配
- android UI StatusBar(手机顶部状态栏)适配
- 安卓类似华为手机适配底部虚拟按键的解决方案
- Android沉浸式状态栏兼容4.4手机的实现
- Android 隐藏手机底部虚拟按键
- 让手机状态栏随心所欲的改变颜色,即android的沉浸式状态栏
- Android 解决沉浸式状态栏和华为虚拟按键冲突
- 关于Android适配华为等带有底部虚拟按键的解决方案
- Android 适配带虚拟按键的手机
- Android适配底部虚拟按键的方法