Android中的TextView深入學習之加載HTML顯示

 今天學習瞭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代碼中所有的節點標簽

   摘自 要做一個給力的程序員–學習之路
 

發佈留言