2018-01-16

WebView 加载 html标签时 修改 标签中字体大小

最近做项目的时候遇到了后台返回的是带html标签的信息,有文字和图片,本想这用TextView做,但是遇到了加载外部图片证书问题,于是改用WebView来做。用WebView做的时候又遇到后台返回的内容即有可能带html标签,又有可能不带,带标签里面有可能含有font-size,又有可能没有。

通过WebSetting设置字体大小,默认大小,缩放比例这几种方式都试过了,在不同的手机上面表现出来的不太一样,总的来说就是没兼容好。于是乎用了CSS来做,直接把内容加上一个CSS格式给它。如下。


public class TestActivityextends Activity {

WebViewwebView;

    public static final StringCSS_STYLE =" img {" +

"width:100%;" +//限定图片宽度填充屏幕

            "height:auto;" +//限定图片高度自动

            "}" +

"body {" +

"margin-right:15px;" +//限定网页中的文字右边距为15px(可根据实际需要进行行管屏幕适配操作)

            "margin-left:15px;" +//限定网页中的文字左边距为15px(可根据实际需要进行行管屏幕适配操作)

            "word-wrap:break-word;" +//允许自动换行(汉字网页应该不需要这一属性,这个用来强制英文单词换行,类似于word/wps中的西文换行)

            "}" +"*{color:#acacac;font-size:}" +

"";

    public Stringstr ="

\r\n\t

"\">用户注册/注销\r\n\r\n

\r\n\t
\r\n
\r\n
" +

"\r\n\t首先,您需要先打开一个常用邮箱:gmail、hotmail、网易、" +

"QQ等邮箱均可。\r\n\r\n

\r\n\t

";line-height:1.5;\">第二步,扫描下面二维码,下载/更新TICKTOCK的app.\r\n\r\n

\r" +

"\n\t第三步,登录页面最下方有注册按钮,点击进入注册页面填写正确" +

"信息以完成注册。\r\n\r\n

\r\n\t
\r\n
\r\n

"stify;\">\r\n\t注意\r\n\r\n

"\"text-align:justify;\">\r\n\tA、需使用真实有效的邮箱注册。" +

"\r\n\r\n

\r\n\t

"\">B、输入完邮箱验证码,需勾选最下方的“我已阅读并同意《用户协议》”,最后再点击“确定”,TICKTOCK账号注册成功。\r\n\r\n

"\"text-a" +

"lign:justify;\">\r\n\tC、没有邮箱,可以马上注册一个网易邮箱。" +

"\r\n";

    @Override

    protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_test);

        webView = findViewById(R.id.webview);

//        Log.e("TestActivity", str.replaceAll("font-size:16px", "font-size:48"));

        webView.loadData(CSS_STYLE +"" +str.replaceAll("(font-size:){1}(\\d){1,}(px){1}", "font-size:24px") +"", "text/html; charset=UTF-8", null);

        StringBuffer sb =new StringBuffer();

        int count =0, index =0;

        String key ="font-size:"; String key2 ="px";

        Log.e("inlexof", str.indexOf(key) +"");

        do  {

String temp =str.substring(index, str.indexOf(key) + key.length());

            sb.append(temp);

            String value = String.valueOf(Integer.valueOf(str.substring(temp.length(), str.indexOf(key2))) +10);

            sb.append(value);

            str =str.substring(str.indexOf(key2) + key2.length(), str.length());

        }while ((str.contains(key)

&&str.contains(key2)));

        sb.append(str);

            Log.e("sb:", sb.toString());

        Pattern pattern = Pattern.compile("(font-size:){1}(\\d){1,}(px){1}");

        str.replaceAll("(font-size:){1}(\\d){1,}(px){1}","font-size:32px");

        Log.e("str:", str.replaceAll("(font-size:){1}(\\d){1,}(px){1}","font-size:32px"));

    }

}

你可能感兴趣的:(2018-01-16)