我正在尝试制作全屏幕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
);
}
}
}
}