当我在应用程序中打开一个webview并第一次加载这个page时,它以错误的方式呈现:内容呈现在一个非常细的列中。请看这里:

只要我重新加载网页视图,或者离开并再次打开片段,一切都很好:

杀死应用程序(清理内存)可以使bug重现。这个漏洞可以在一些Android设备上重现。有什么想法吗?
-编辑
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@color/white" >
<WebView
android:id="@+id/fragment_web_view_wv"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>以下是WebView初始化代码:
mWebView = (WebView) getView().findViewById(R.id.fragment_web_view_wv);
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
private boolean mShowingProgressbar = false;
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
android.webkit.WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(spaceNeeded * 2);
}
public void onConsoleMessage(String message, int lineNumber, String sourceID) {
Log.d("Javascript", message + " ---- From line " + lineNumber);
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (newProgress == 100) {
progressBarPopup.dismiss();
mShowingProgressbar = false;
} else if (!mShowingProgressbar) {
progressBarPopup.show();
mShowingProgressbar = true;
}
super.onProgressChanged(view, newProgress);
}
});
mWebView.getSettings().setDomStorageEnabled(false);
// Set cache size to 8 mb by default. should be more than enough
mWebView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = getActivity().getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setSavePassword(false);
mWebView.getSettings().setUserAgentString("anne-eli");
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(false);
// mWebView.addJavascriptInterface(new JavaScriptInterface(),
// "Android");
// Workaround for the issue:
// https://code.google.com/p/android/issues/detail?id=7189
mWebView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!v.hasFocus()) {
v.requestFocus();
}
break;
}
return false;
}
});发布于 2015-03-01 01:13:55
尝试通过以下方式初始化WebView设置:
WebView webview= (Webview) view.findViewById(R.id.fragment_web_view_wv);//initialize webview
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setLoadWithOverviewMode(false);然后加载url.Further,您可以通过以下方式尝试放大:
webview.setInitialScale(100);发布于 2015-03-02 21:56:03
这看起来很奇怪,但在我的情况下是有效的,
<WebView
android:id="@+id/fragment_web_view_wv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>发布于 2015-03-04 03:16:46
添加这段代码:
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}添加到您的setWebViewClient(...)以检查加载错误。
https://stackoverflow.com/questions/28636027
复制相似问题