今天學習瞭TextView的進行加載HTML來顯示文字,圖片等信息;
首先來看一個Textview的一個屬性android:autoLink 這個屬性來解析Textview的中的一些特殊字符例如:web,email,phone,map,..當還可以通過android:textColorLink來設定這些特殊字符的顏色;另外其他的屬性可以設定字體大小,顏色等等;雖然這些都可以實現所需要的功能,不過Google還提供瞭一個Html類來直接加載HTML代碼。一起來學習下。
(一):看下Html類的繼承圖:這是直接繼承瞭Object類:
這個類可以顯示Html代碼轉換成對應的text,但不是所有的HTML的標簽都支持。
Html主要有下面的方法:
1:public static Spanned fromHtml (String source)
這個方法是返回顯示的文本,但是如果遇到img標簽的話,android系統會直接會用一個默認的圖片放上去,等著我們自己去加載圖片,完成之後,把加載成功的圖片替代上去,
[java] <span style="font-size: 16px; "> _TextView
.setText(Html
.fromHtml("<b>江蘇</b><h1>南通</h1><font color='#00FF00'>海門</font>" +
"<img src='/wp-content/images1/20181007/bg_logo419.png'/>"));</span>
效果截圖如下:
看右下角那個不能顯示的圖片,如何可以實現圖片顯示呢?那就下下面那個重載的fromHtml方法…
2:public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
①:這個重載方法中第二個參數是個ImageGetter接口 其中我們實現這個接口的一個public abstract Drawable getDrawable (String source)方法,這個方法來加載圖片,【註意:這是一定要調用setbounds()方法來設置圖片的大小】
[java] <span style="font-size: 18px; "> </span><span style="font-size: 16px; ">ImageGetter _ImageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
if (source != null) {
BitmapDrawable _BitmapDrawable = (BitmapDrawable) getResources()
.getDrawable(R.drawable.tu);
_BitmapDrawable.setBounds(0, 0, 100, 100);
return _BitmapDrawable;
}
return null;
}
};</span>
<span style="font-size: 18px; "> </span><span style="font-size: 16px; ">ImageGetter _ImageGetter = new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
if (source != null) {
BitmapDrawable _BitmapDrawable = (BitmapDrawable) getResources()
.getDrawable(R.drawable.tu);
_BitmapDrawable.setBounds(0, 0, 100, 100);
return _BitmapDrawable;
}
return null;
}
};</span> 這裡為瞭簡便直接返回瞭資源庫中的圖片瞭:
②第三個參數是個TagHandler 接口,實現這個接口中的public abstract void handleTag (boolean opening, String tag, Editable output, XMLReader xmlReader)方法來解析標簽,尤其那些不是屬於HTML的中標簽,可以理解為自定義的。。。
[java] TagHandler _TagHandler = new Html.TagHandler() {
@Override
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
Toast.makeText(TestActivity.this, tag, 2000).show();
}
};
TagHandler _TagHandler = new Html.TagHandler() {
@Override
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
Toast.makeText(TestActivity.this, tag, 2000).show();
}
};
上面就直接返回瞭傳入的那段HTML代碼中所有的節點標簽
摘自 要做一個給力的程序員–學習之路