2

我正在编写一个包含 webview 的 Android 应用程序,它加载一个包含相当大表单的页面。我在加载表单的过程中显示了一个进度条。当进度条消失时,我经常只看到一个空白页面或表单的一些元素(比如几个复选框,没有文本)。在我尝试滚动页面(单击)后,一切都会显示出来。知道这里有什么问题吗?

webview的设置是:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*128);
mWebView.getSettings().setAppCachePath(getActivity().getApplicationContext().getCacheDir().getAbsolutePath());
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
mWebView.setWebChromeClient(new WebChromeClient() {
       @Override
       public void onExceededDatabaseQuota(String url,
                            String databaseIdentifier,
                            long currentQuota,
                            long estimatedSize,
                            long totalUsedQuota,
                            WebStorage.QuotaUpdater quotaUpdater)
       {
           quotaUpdater.updateQuota(estimatedSize * 2);
       }
    });
mWebView.addJavascriptInterface(new WebFormJavascriptInterface(), "jsinterface");
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setPluginState(android.webkit.WebSettings.PluginState.ON_DEMAND);

布局文件是:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:hardwareAccelerated="false"
    android:persistentDrawingCache="all"
/>
<ProgressBar
    android:id="@+id/progressbar"
    style="@android:style/Widget.Holo.ProgressBar.Large"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:indeterminate="true"
    android:visibility="gone"/>
</RelativeLayout>
4

3 回答 3

2

我有一个不同的问题,但遇到了这个。正在做

webview.postInvalidateDelayed(1500);

在声明中的 1.5 秒后,onPageFinished()几乎有助于WebView刷新本身new WebViewClient(){}。不过,可能有比这个更好的答案

于 2013-04-26T20:21:50.473 回答
1

你覆盖 WebViewClient 吗?覆盖 WebViewClient 的 onPageStarted() 和 onPageFinished() 方法时,我遇到了同样的问题,删除了 super.onPageStarted() 和 super.onPageFinished()。WebView 首先加载空白页面并在我触摸屏幕时显示内容。super (super.onPageStarted(), super.onPageFinished()) 的返回调用方法解决了我的问题。

于 2014-02-19T11:00:14.303 回答
1

我有一个类似的问题。mWebView.requestFocusFromTouch()当我想在 webview 中查看新内容时调用解决了我的问题。

于 2020-10-20T07:51:42.940 回答