3

有时,当我使用 loadUrl 加载我的 webview 时,网站不会显示,直到我触摸屏幕或滚动。

这就像我有一个 webview 绘图问题。

            Context context = ctx;
        final Dialog dialog = new Dialog(context);
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setContentView(R.layout.website);
            WebView webView = (WebView) dialog.findViewById(R.id.weburl);
            webView.setScrollbarFadingEnabled(false);  
            //Disable the horizontal scroll bar  
            webView.setHorizontalScrollBarEnabled(false);  
            //Enable JavaScript  
            webView.getSettings().setJavaScriptEnabled(true);  
            //Set the user agent  
            webView.getSettings().setUserAgentString("AndroidWebView");  
            //Clear the cache  
            webView.clearCache(true);  


            webView.loadUrl("http://" + WebUrl);
            webView.setWebViewClient(new WebViewClient() {
                public boolean shouldOverrideUrlLoading(WebView view, String url){
                    // do your handling codes here, which url is the requested url
                    // probably you need to open that url rather than redirect:
                    view.loadUrl(url);
                    view.setVisibility(View.VISIBLE);
                    return false; // then it is not handled by default action
               }

                @Override
                public void onPageFinished(WebView view, String url) {
                    view.refreshDrawableState();
                    Log.v("FINISH","FINISH");
                }


            });

有谁知道我为什么会遇到这种问题。

4

3 回答 3

2

您在哪个版本的 Android 上进行测试?4.1 之前的 Android 版本似乎有时会在 WebViews 上出现此类问题。

将此添加到该 Activity 的清单中以解决问题:

android:hardwareAccelerated="false"
于 2012-10-17T16:51:17.067 回答
2

WebView您的布局中不可见:

<WebView
    ...
    android:visibility="invisible"
    .../>

现在,在第一次发生时将其显示回来onPageFinished

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        if (webView.getVisibility() != View.VISIBLE) {
            webView.setVisibility(View.VISIBLE);
        }
    }
});
于 2013-11-26T17:10:12.683 回答
0

我不确定,我没有完整的代码,但我认为与webViewClient此函数中的实现有关:

public boolean shouldOverrideUrlLoading(WebView view, String url){
    // do your handling codes here, which url is the requested url
    // probably you need to open that url rather than redirect:
    view.loadUrl(url);
    view.setVisibility(View.VISIBLE);
    return false; // then it is not handled by default action
}

这是官方定义:

public boolean shouldOverrideUrlLoading(WebView 视图,字符串 url)

尝试使用您的代码进行测试而不实现shouldOverrideUrlLoading,或者制作它return true

于 2012-10-17T16:28:51.240 回答