Android webView 图片内容自适应屏幕

最近项目用到webview显示后台返回的富文本编辑器生成的html代码.

网上给出的方法基本如下:

WebSettings settings = webView.getSettings(); 
settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
settings.setUseWideViewPort(true); 
settings.setLoadWithOverviewMode(true);

这些方法都试过了不管用。

网上百度说是在Android 4.4. 版本之后不再支持这些设置,所以只能自己重新研究:


首先看下例子:

<p>\r\n\t<img src="http:\/\/oss-cn-qingdao.aliyuncs.com\/tiefenapp-oss\/Uploads\/file\/26\/image\/2016-05-24\/5744701c9dec3.JPG" alt="" \/>\r\n<\/p>\r\n<p>\r\n\t<p>\r\n\t\t<br \/>\r\n\t<\/p>\r\n\t<p>\r\n\t\thttp:\/\/oss-cn-qingdao.aliyuncs.com\/tiefenapp-oss\/Uploads\/file\/26\/image\/2016-05-03\/mobile5728a5bae6d05.JPG\r\n\t<\/p>\r\n\t<p>\r\n\t\t<br \/>\r\n\t<\/p>\r\n\t<p>\r\n\t\t       用户评论\r\n\t<\/p>\r\n<\/p>

好多&lt等需要转换后的标签

首先第一步将标签转换成html的标签,我在网上没有找到java的转换函数,这里用到了自己写的函数,如果有好的方法,大家评论提意见:

 static final String mbs = "&#(\\d+);"; // like "ロ"  
      
        public static String EncodeCesToChars(String paramStr) {  
            paramStr = paramStr.replace("&","&")  
                    .replace("<","<")  
                    .replace(">",">")  
                   // .replace(""","\"")  
                    .replace(" "," ")  
                    .replace("'","'");  
              
            String mbChar;  
            StringBuffer sb = new StringBuffer();  
            Pattern pat = Pattern.compile(mbs);  
            Matcher mat = pat.matcher(paramStr);  
            while (mat.find()) {  
                mbChar = getMbCharStr(mat.group(1)); // pass the digit part  
                mat.appendReplacement(sb, mbChar);  
            }  
            mat.appendTail(sb);  
            return new String(sb);  
        }  
      
        /* worker method */  
        static String getMbCharStr(String digits) { // handle "12525" part which is  
                                                    // a  
            char[] cha = new char[1]; // Unicode value stringnized  
            try {  
                int val = Integer.parseInt(digits);  
                char ch = (char) val;  
                cha[0] = ch;  
            } catch (Exception e) {  
                System.err.println("Error from getMbCharStr:");  
                e.printStackTrace(System.err);  
            }  
            return new String(cha); // easy!, because Java uses Unicode  
        }  
         
调用EncodeCesToChars()函数即可。

接着需要将图片适应屏幕大小和文字自动换行:

首先图片大小可以用css来控制:

"<style>"+"img{" +"max-width:100%;" +"height:auto}"+"</style>"

文字换行也可以用css:

<body width='100%' style=\"word-wrap:break-word; font-family:Arial\">"



这样就可以实现图片适应屏幕的大小并且实现文字自动换行,如果css不生效可以给webview设置支持js:

settings.setJavaScriptEnabled(true);

ok.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值