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"));
}
}