首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -全屏模式下的Webview如果存在softkeybaord,如何隐藏通知栏

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

Stack Overflow用户
提问于 2014-11-18 17:23:44
回答 2查看 3.9K关注 0票数 3

我已经开发了一个使用webview的小型Android应用程序。所有Android UI元素,如通知栏、statusbar、actionbar都是通过以下方式隐藏的:

代码语言:javascript
复制
  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)如果我用软键盘上的左上键关闭了软键盘,通知栏仍然是打开的,并且占据了我的网页标题栏的一部分。如果软键盘已打开,我如何隐藏通知栏?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2014-11-30 19:35:33

这对我很有效。在onCreate中调用:

代码语言:javascript
复制
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:

代码语言:javascript
复制
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        setFullscreen();
    }
}
票数 1
EN

Stack Overflow用户

发布于 2016-11-18 20:37:33

我也有同样的问题,通过这样做解决了它:

代码语言:javascript
复制
    mWebView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            hideSystemUI(); // setup fullscreen
        }
    });
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26990661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档