一個顯示富文本的 TextView

MosLdy 8年前發布 | 20K 次閱讀 TextView Android開發 移動開發

XRichText

XRichText是一個可以顯示Html富文本的TextView。可以用于顯示新聞、商品詳情等場景。

一個顯示富文本的 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!