我已经开发了一个使用webview的小型Android应用程序。所有Android UI元素,如通知栏、statusbar、actionbar都是通过以下方式隐藏的:
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);}
如果我打开一个HTML公式并轻敲一个输入字段,软键盘就会出现。但随后Android通知栏也会出现,这是我不想要的。(见图片:http://imgur.com/a/cKWg8#0)如果我用软键盘上的左上键关闭了软键盘,通知栏仍然是打开的,并且占据了我的网页标题栏的一部分。如果软键盘已打开,我如何隐藏通知栏?
谢谢!
发布于 2014-11-30 19:35:33
这对我很有效。在onCreate中调用:
private void setupFullscreenMode() {
View decorView = setFullscreen();
decorView
.setOnSystemUiVisibilityChangeListener(new OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
setFullscreen();
}
});
}
private View setFullscreen() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
return decorView;
}还要覆盖onWindowsFocusChanged:
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
setFullscreen();
}
}发布于 2016-11-18 20:37:33
我也有同样的问题,通过这样做解决了它:
mWebView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
hideSystemUI(); // setup fullscreen
}
});https://stackoverflow.com/questions/26990661
复制相似问题