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

來源:互聯網
上載者:User

 今天學習了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='http://developer.android.com/assets/images/bg_logo.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代碼中所有的節點標籤

   摘自 要做一個給力的程式員--學習之路
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.