首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebView在加载第一个页面时呈现的布局太小

WebView在加载第一个页面时呈现的布局太小
EN

Stack Overflow用户
提问于 2015-02-21 02:43:49
回答 5查看 1.7K关注 0票数 1

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

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

杀死应用程序(清理内存)可以使bug重现。这个漏洞可以在一些Android设备上重现。有什么想法吗?

-编辑

代码语言:javascript
运行
复制
<?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初始化代码:

代码语言:javascript
运行
复制
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;
    }
});
EN

回答 5

Stack Overflow用户

发布于 2015-03-01 01:13:55

尝试通过以下方式初始化WebView设置:

代码语言:javascript
运行
复制
WebView webview= (Webview) view.findViewById(R.id.fragment_web_view_wv);//initialize webview
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setLoadWithOverviewMode(false);

然后加载url.Further,您可以通过以下方式尝试放大:

代码语言:javascript
运行
复制
webview.setInitialScale(100);
票数 0
EN

Stack Overflow用户

发布于 2015-03-02 21:56:03

这看起来很奇怪,但在我的情况下是有效的,

代码语言:javascript
运行
复制
  <WebView
    android:id="@+id/fragment_web_view_wv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
票数 0
EN

Stack Overflow用户

发布于 2015-03-04 03:16:46

添加这段代码:

代码语言:javascript
运行
复制
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}

添加到您的setWebViewClient(...)以检查加载错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28636027

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档