Android - 全屏模式下的Webview如果存在softkeybaord,如何隐藏通知栏

时间:2014-11-18 09:23:44

标签: android webview android-softkeyboard statusbar

我使用webview开发了一个小型Android应用。所有Android UI元素(例如通知栏,状态栏,操作栏)均使用以下隐藏:

  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) 如果我通过软键盘上的左上键关闭软键盘,通知栏仍然保持打开状态并占据我的HTML页面上标题栏的一部分。 如果打开软键盘,如何隐藏通知栏?

谢谢!

2 个答案:

答案 0 :(得分:1)

这对我有用。在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();
    }
}

答案 1 :(得分:0)

我遇到了同样的问题,通过这样做解决了这个问题:

    mWebView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            hideSystemUI(); // setup fullscreen
        }
    });