美文网首页Android之界面Android
Android4.4以上webview自适应

Android4.4以上webview自适应

作者: 我姓连 | 来源:发表于2016-06-16 10:13 被阅读4576次

           最近在做一个电商项目,用到webview来显示商品的详情(富文本类型),测试的时候选择了一部系统4.1的手机,当时的做法如下:

    WebSettingswb=webView.getSettings();

    wb.setJavaScriptEnabled(true);

    //设置自适应

    wb.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL.SINGLE_COLUMN);

    wb.setDefaultTextEncodingName("UTF-8");

    wb.setAppCacheEnabled(true);

    wb.setCacheMode(WebSettings.LOAD_DEFAULT);

    holder.mWbBrief.loadDataWithBaseURL(null,content,"text/html","utf-8",null);

           在Android4.1系统手机上运行是正常的,图片自适应屏幕完美,但是后来在4.4以上的手机测试发现,发现图片不会自适应,经过查找资料发现是由于Android在4.4以后浏览器内核变化引起的。解决办法如下:

    mWebview.getSettings().setDefaultTextEncodingName("utf-8");// 避免中文乱码

    mWebview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);

    WebSettingssettings=mWebview.getSettings();

    settings.setJavaScriptEnabled(true);

    settings.setNeedInitialFocus(false);

    settings.setSupportZoom(true);

    settings.setLoadWithOverviewMode(true);//适应屏幕

    settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

    settings.setLoadsImagesAutomatically(true);//自动加载图片

    settings.setCacheMode(WebSettings.LOAD_DEFAULT

    |WebSettings.LOAD_CACHE_ELSE_NETWORK);

    Documentdoc_Dis=Jsoup.parse(content);

    Elementsele_Img=doc_Dis.getElementsByTag("img");

    if(ele_Img.size() !=0) {

        for(Elemente_Img:ele_Img) {

            e_Img.attr("width","100%");

            //一定要设置auto 不要控制其高度,让其跟随宽度变化情况调整

            e_Img.attr("height","auto"); 

            }

    }

    StringnewHtmlContent=doc_Dis.toString();

    mWebview.loadDataWithBaseURL(null,newHtmlContent,"text/html","utf-8",null);

    经过测试,完美的解决了图片自适应的问题。

    PS:这种处理方法需要引用 jsoup

    相关文章

      网友评论

        本文标题:Android4.4以上webview自适应

        本文链接:https://www.haomeiwen.com/subject/ynjmdttx.html