android隐藏底部虚拟键Navigation Bar

嗯。。。。经过实践检测,这种方式仍旧不行哦。如果想彻彻底底的隐藏需要到更深的一层。
此方法只是在某些时候隐藏了,但是从下往上拉的时候还能拉出来,并不完美。(看看就好)

先说下场景,近期做的一个应用需要用到此功能。于是查阅很多的资料发现并不是能够很好地解决此问题。特此记录


android隐藏底部虚拟键Navigation Bar_第1张图片
navigation bar

上图便是底部虚拟按键展示图。
下面来写关键代码

/**
*第一种:始终隐藏,触摸屏幕时也不出现
*解决办法:同时设置以下两个参数
*View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
*View.SYSTEM_UI_FLAG_IMMERSIVE
*在需要隐藏虚拟键Navigation Bar的Activity的onCreate方法中
*添加如下代码:
* 隐藏pad底部虚拟键
*/
Window _window;
Window _window = getWindow();
WindowManager.LayoutParams params = _window.getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|View.SYSTEM_UI_FLAG_IMMERSIVE;
_window.setAttributes(params);

/**
*不要直接copy啊,这是两种形式,都放在一起了。
*第二种:隐藏了,但触摸屏幕时出现
*解决办法:设置以下一个参数
*View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
*在需要隐藏虚拟键Navigation Bar的Activity的onCreate方法中
*添加如下代码:
*隐藏pad底部虚拟键
*/
Window _window;
_window = getWindow();
WindowManager.LayoutParams params = _window.getAttributes();
params.systemUiVisibility = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
_window.setAttributes(params);

这种方式,可以隐藏navigation bar 并且可以弹出软键盘。在输入之后仍旧可以隐藏下去。
此方法是查阅以下链接https://www.cnblogs.com/evolutionoflicorice/p/5746056.html

android隐藏底部虚拟键Navigation Bar_第2张图片
第一种方式成功图

特此记录一下。

下面是我不成功的尝试

 protected void hideBottomUIMenu() {
        //隐藏虚拟按键,并且全屏
        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower api
            View v = getWindow().getDecorView();
            v.setSystemUiVisibility(View.GONE);
        } else if (Build.VERSION.SDK_INT >= 19) {
            //for new api versions.这种方式虽然是官方推荐,但是根本达不到效果
            View decorView = getWindow().getDecorView();
            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN;
            decorView.setSystemUiVisibility(uiOptions);
        }
    }

上述方式,虽然能够隐藏,但是当用户点击键盘输入的时候,隐藏效果就消失了。这只是个人感觉。特此记录。

你可能感兴趣的:(android隐藏底部虚拟键Navigation Bar)