嗯。。。。经过实践检测,这种方式仍旧不行哦。如果想彻彻底底的隐藏需要到更深的一层。
此方法只是在某些时候隐藏了,但是从下往上拉的时候还能拉出来,并不完美。(看看就好)
先说下场景,近期做的一个应用需要用到此功能。于是查阅很多的资料发现并不是能够很好地解决此问题。特此记录
上图便是底部虚拟按键展示图。
下面来写关键代码
/**
*第一种:始终隐藏,触摸屏幕时也不出现
*解决办法:同时设置以下两个参数
*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
特此记录一下。
下面是我不成功的尝试
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);
}
}
上述方式,虽然能够隐藏,但是当用户点击键盘输入的时候,隐藏效果就消失了。这只是个人感觉。特此记录。