XRichText,轻松搞定富文本

作者: droidlover | 来源:发表于2016-11-04 10:24 被阅读1453次

上一篇文章:XRecyclerView,一个库搞定recyclerview

XRichText是一个可以显示Html富文本的TextView。可以用于显示新闻、商品详情等场景。欢迎star、fork,提出意见。

Paste_Image.png

使用

  • 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);

api说明

  • onLinkClick(String url) 当点击超链接时触发,url为点击的url
  • onImageClick(List<String> urlList, int position) 当点击图片时触发,urlList为图片的url集合,position为被点击的位置,从0开始
  • onFix(XRichText.ImageHolder holder) 当图片加载前回调此方法,通过holder可以调整图片的src、width、height、style(对齐方式)
  • 设置html内容时,务必调用text方法
  • imageDownloader(ImageLoader loader)可以自定义图片加载器,库中已有默认实现。可以根据项目情况定义加载器,如三方库UIL、Picasso等,只需实现ImageLoader接口就行。
  • ClickCallback接口有默认实现类BaseClickCallback,可以直接使用此类重写需要的方法。

相关文章

网友评论

  • db895d39583b:如果文本也用标签包裹起来,在富文本展示的时候怎么解析啊。文字还带着标签
  • 咸鱼佬:支不支持图片加载时gif动图
    droidlover:@编程世界的孩子 :flushed:
    咸鱼佬: @droidlover 支持的话我就能直接用在我的项目中了😀😀
    droidlover:@编程世界的孩子 暂时还不支持,我会尽快加入这个功能,谢谢您的反馈。

本文标题:XRichText,轻松搞定富文本

本文链接:https://www.haomeiwen.com/subject/lbgiuttx.html