如何在键盘关闭后隐藏导航栏?

时间:2018-06-11 09:15:17

标签: java android main-activity

我正在尝试制作全屏幕Webview应用程序,当用户在网页上搜索某些内容时,键盘会弹出(显然),导航栏和状态栏会显示,但当用户关闭键盘时,导航栏和状态栏不会像通常那样隐藏,而是直到用户向下滑动状态栏并再次向上滑动。

我该如何解决这个问题?我在互联网上搜索了这个问题,显然很多像我这样的新手面临同样的问题。如果您向我提供解决方案,将会很有帮助。

这是我的代码。 (mainactivity.java)

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

  // find the WebView by name in the main.xml of step 2
    browser=(WebView)findViewById(R.id.webview);

    // Enable javascript
    browser.getSettings().setJavaScriptEnabled(true);

    // Set WebView client
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // open in Webview
            if (url.contains("example.com") ){
                // Can be clever about it like so where myshost is defined in your strings file
                // if (Uri.parse(url).getHost().equals(getString(R.string.myhost)))
                return false;
            }
            // open rest of URLS in default browser
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
    });
    // Load the webpage

    browser.loadUrl("http://example.com/");


}
//back button
public void onBackPressed() {
    if (browser.canGoBack()) {
        browser.goBack();
    } else {
        super.onBackPressed();
    }

}

// nav bar and status bar hide..... should figure out glitch with keyboard
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            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_LOW_PROFILE
                            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                            | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            );
        }
    }
}

}

1 个答案:

答案 0 :(得分:0)

使用此库documentation for it,它已经实现了监听显示/隐藏键盘的逻辑:

{{1}}