搜索
您的当前位置:首页正文

Android弹出Dialog时隐藏状态栏和底部导航栏的方法

来源:榕意旅游网
Android弹出Dialog时隐藏状态栏和底部导航栏的⽅法

上代码

dialog.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

dialog.getWindow().getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { @Override

public void onSystemUiVisibilityChange(int visibility) {

int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | //布局位于状态栏下⽅

View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | //全屏

View.SYSTEM_UI_FLAG_FULLSCREEN | //隐藏导航栏

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; uiOptions |= 0x00001000;

dialog.getWindow().getDecorView().setSystemUiVisibility(uiOptions); }});

ps:下⾯看下Android Dialog弹出时不显⽰导航栏(沉浸式)

我们的app是全屏沉浸式的,发现activity在设置了全屏后,弹出dialog底部会跳出导航栏虚拟键。具体原因是因为Dialog的Window抢⾛了焦点,Window 中的 DecorView 状态改变导致了退出。 解决⽅法,在Dialog中:

private void fullScreenImmersive(View view) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 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; view.setSystemUiVisibility(uiOptions); } }

@Override

public void show() {

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); super.show();

fullScreenImmersive(getWindow().getDecorView());

this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE); }

总结

以上所述是⼩编给⼤家介绍的Android 弹出Dialog时隐藏状态栏和底部导航栏的⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!

因篇幅问题不能全部显示,请点此查看更多更全内容

Top