一個顯示富文本的 TextView
XRichText
XRichText是一個可以顯示Html富文本的TextView。可以用于顯示新聞、商品詳情等場景。
使用
- Gradle : compile 'cn.droidlover:XRichText:1.0.0'
- Github :XRichText
主要特性
- 自定義超鏈接link的點擊
- 自定義圖片img的點擊
- 支持鏈式調用
- 圖片支持三種對齊方式(左對齊、居中、右對齊)
- 支持在圖片加載前對每張圖片的url、width、height、對齊方式精細調整
- 內置圖片下載器
- 可自定義圖片下載器,如使用universal image loader、Picasso、Glide等
實現原理
- spanned
- 線程池
- 自定義ImageGetter
示例
<cn.droidlover.xrichtext.XRichText android:id="@+id/richText" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" />
在Java中:
richText .callback(new XRichText.BaseClickCallback() {@Override public boolean onLinkClick(String url) { showMsg(url); return true; } @Override public void onImageClick(List<String> urlList, int position) { super.onImageClick(urlList, position); showMsg("圖片:" + position); } @Override public void onFix(XRichText.ImageHolder holder) { super.onFix(holder); if (holder.getPosition() % 3 == 0) { holder.setStyle(XRichText.Style.LEFT); } else if (holder.getPosition() % 3 == 1) { holder.setStyle(XRichText.Style.CENTER); } else { holder.setStyle(XRichText.Style.RIGHT); } //設置寬高 holder.setWidth(550); holder.setHeight(400); } }) .imageDownloader(new ImageLoader() { @Override public Bitmap getBitmap(String url) throws IOException { return UILKit.getLoader().loadImageSync(url); } }) .text(TEXT);</pre>
api說明
- onLinkClick(String url) 當點擊超鏈接時觸發,url為點擊的url
- onImageClick(List urlList, int position) 當點擊圖片時觸發,urlList為圖片的url集合,position為被點擊的位置,從0開始
- onFix(XRichText.ImageHolder holder) 當圖片加載前回調此方法,通過holder可以調整圖片的src、width、height、style(對齊方式)
- 設置html內容時,務必調用text方法
- imageDownloader(ImageLoader loader)可以自定義圖片加載器,庫中已有默認實現。可以根據項目情況定義加載器,如三方庫UIL、Picasso等,只需實現ImageLoader接口就行。 getBitmap方法已經在線程池中,所以自定義loader時不必考慮線程問題.
- ClickCallback接口有默認實現類BaseClickCallback,可以直接使用此類重寫需要的方法。
本文由用戶 MosLdy 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!