Android 如何在web视图完全呈现之前消除白色屏幕?
我有一个通过loadData()加载的webview,但当它呈现时,在加载正确的数据之前,它总是在一瞬间显示一个白色页面Android 如何在web视图完全呈现之前消除白色屏幕?,android,android-webview,Android,Android Webview,我有一个通过loadData()加载的webview,但当它呈现时,在加载正确的数据之前,它总是在一瞬间显示一个白色页面 holder.webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, n
holder.webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if(newProgress==100){
holder.webView.setVisibility(View.VISIBLE);
}
}
});
我已经尝试过让web视图在完全加载后才可见,但没有成功
有没有一种简单的方法可以解决这个问题?您可以将它隐藏起来,直到它完成加载,您可以在它完成后通过以下命令收听
mWebView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// show it
}
});
更多信息可以在中找到,正如您所说,在页面完全加载后处理数据需要一些时间。由于时间是可预测的(200ms到1000ms),您可以在加载页面后使用延迟,并在1秒后或处理页面所需的最长时间后显示
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
holder.webView.setVisibility(View.VISIBLE);
}
}, MAX_TIME_TAKEN_MILLIS);
请注意,为了在隐藏过程中提高效率,请使用
VIEW.INVISIBLE
而不是VIEW.GONE
,除此之外,该方法仅在内容存在后调用,而不是在内容正确显示时调用。我也尝试过此解决方案,即使等待时间更长,但它不会改变结果,很遗憾。好的,然后,在webview顶部创建一个布局,并隐藏顶部的布局,而不是使webview可见。可能是能见度影响了@AlessandroBianchinI,我刚刚完成工作,所以我必须等到明天再尝试。提前谢谢!你欢迎,你可以投票并接受答案,如果它有帮助的话。布局如何工作?它必须有颜色,否则它不会隐藏webview,所以问题仍然存在