android 隐藏导航栏 虚拟键
【摘要】 感谢作者:https://juejin.im/post/5d5ce681e51d45620821cec6
1、首先设置全屏显示
2、然后全屏并隐藏虚拟导航栏。设置导航栏状态监听,避免点击一下后导航栏又出现了。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowM...
感谢作者:https://juejin.im/post/5d5ce681e51d45620821cec6
1、首先设置全屏显示
2、然后全屏并隐藏虚拟导航栏。设置导航栏状态监听,避免点击一下后导航栏又出现了。
-
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
final View decorView = getWindow().getDecorView();
-
final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
-
decorView.setSystemUiVisibility(uiOptions);
-
decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
-
@Override
-
public void onSystemUiVisibilityChange(int i) {
-
if ((i & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
-
decorView.setSystemUiVisibility(uiOptions);
-
} else {
-
-
}
-
}
-
});
BUT!如果弹出了一个Dialog,导航栏会再次出现,这并不是我们想要的效果。
SO!在Dialog中:
我们需要在Dialog的show方法中加一下东西。为啥要在show中加,因为加在onStart方法中,导航栏会闪一下。
-
@Override
-
public void show() {
-
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
-
//不加这一行,虚拟键会再出现,再消失
-
super.show();
-
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
-
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
-
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-
| View.SYSTEM_UI_FLAG_FULLSCREEN;
-
getWindow().getDecorView().setSystemUiVisibility(uiOptions);
-
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
-
}
文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/jacke121/article/details/103334723
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)