软件编程
位置:首页>> 软件编程>> Android编程>> Android 弹出Dialog时隐藏状态栏和底部导航栏的方法

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

作者:YangBryant  发布时间:2021-06-22 16:54:53 

标签:dialog,android,状态栏,导航栏

 上代码


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时隐藏状态栏和底部导航栏的方法,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

来源:https://www.cnblogs.com/94xiyang/archive/2019/07/02/11121073.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com