Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在web视图完全呈现之前消除白色屏幕?_Android_Android Webview - Fatal编程技术网

Android 如何在web视图完全呈现之前消除白色屏幕?

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

我有一个通过loadData()加载的webview,但当它呈现时,在加载正确的数据之前,它总是在一瞬间显示一个白色页面

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,所以问题仍然存在