Android 利用控件显示HTML样式
android显示HTML样式的方法很多,此处介绍两种很简单的方法:TextView和WebView
方法一、利用TextView或者GiftTextView直接显示
这种方法优点是简单,直接设置即可,但缺点就是对样式兼容性不高,对应某些复杂的样式会显示不正确。所以此类方法只适用于显示几行简单的样式的需求,并且当有图片时还需要额外去处理图片。
CharSequence charSequence;
String url1="http://ww.baidu.com";
String str = "<font color='#0099cc'> <a href=\""+url1+"\">"+url1+"</a></font>";
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
charSequence = Html.fromHtml(str,Html.FROM_HTML_MODE_LEGACY);
} else {
charSequence = Html.fromHtml(str);
}
holder.text_left.setText(charSequence);
方法二、利用WebView控件去显示样式
此方法能适用于显示复杂的样式,如显示HTML页面等等,并且自带图片处理不用额外的去处理图片。
首先,我们在layout布局中放入WebView标签,但需要注意的是WebView的父标签的宽高必须是match_parent,具体如图:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<WebView
android:layout_marginTop="10dp"
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</LinearLayout>
然后在使用的时候声明WebView
WebSettings webSettings = holder.webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBlockNetworkImage(false);
//webSettings.setBuiltInZoomControls(true);
//webSettings.setSupportZoom(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webSettings.setAllowFileAccess(true);
webSettings.setSupportMultipleWindows(true);
webSettings.setDomStorageEnabled(true);
webSettings.setDefaultFontSize(30); //设置显示字体的大小
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//控制webview不可点击
hol