聲明html
此文章爲轉載,並且寫的還算不錯。。java
結構android
繼承關係web
public class Html extends Object瀏覽器
java.lang.Objectide
android.text.Html函數
類概述測試
該類主要用來格式化html格式的文本,像瀏覽器同樣對html標籤進行解析,渲染輸出,但並非全部的標籤都被支持!(譯者注:固然你自定義的標籤默認確定不被支持,但能夠經過實現Html.TagHandler這個接口來自我解析。下面會講到。)字體
內部類spa
interface Html.ImageGetter
用來檢索HTML中的<img>標籤。(譯者注:若是實現了這個接口,當解析的時候遇到<img> 標籤時會回調ImageGetter的getDrawable(String source)方法,並返回一個Drawable對象,該方法參數爲<img>標籤的src屬性的值)
interface Html.TagHandler
用來通知當解析器遇到沒法識別的標籤時該做出何種處理
公共方法
public static Spanned fromHtml (String source)
返回經過TagSoup (TagSoup 是一個Java開發符合SAX的HTML解析器 受權協議)解析器解析以後的可直接顯示的文本,任何<img>則由默認的通常圖片所替代,固然也能夠經過實現Html.ImageGetter接口來顯示真正的圖片。
參數
source 待處理的html文本
public static Spanned fromHtml (String source, Html.ImageGetter imageGetter, Html.TagHandler tagHandler)
同上,不一樣的是當遇到img標籤,或解析器沒法識別的標籤時分別觸發註冊的兩個對象來進行處理。
參數
source 爲待處理的html文本
imageGetter Html.ImageGetter對象
tagHandler Html.TagHandler 的
public static String toHtml (Spanned text)
該方法徹底能夠理解爲fromHtml()的可逆函數,將Spanned 類型的文本還原爲HTML文本。
示例代碼
public class Main extends Activity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv = (TextView) findViewById(R.id.demo);
// 貌似都不支持HTML標籤的屬性,及CSS樣式,下面使用到的字體顏色都不被支持 //String html = "<h2>html測</h2><pstyle='color:red;'>這是測試內容</p><p><imgsrc='http://www.baidu.com/img/baidu_sylogo1.gif'></p>"; String html = "<h2>html測試</h2><p font='red'>這是測試內容</p><p><img src='http://www.baidu.com/img/baidu_sylogo1.gif'></p>";
tv.setText(Html.fromHtml(html,newHtml.ImageGetter(){
@Override public Drawable getDrawable(String source) { Drawable myDrawable = null; try { myDrawable = Drawable.createFromStream(newURL(source).openStream(), "baidu_sylogo1.gif"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }
myDrawable.setBounds(0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
return myDrawable; }},null)); }
} |