Skip to content
郑州 edited this page Sep 6, 2016 · 20 revisions

基本使用

RichText.from(text).into(textView);

设置数据源类型

直接设置

// 设置为Html
RichText.fromHtml(text).into(textView);

// 设置为Markdown
RichText.fromMarkdown(text).into(textView);

使用type方法设置

RichText.from(text).type(RichText.TYPE_MARKDOWN).into(textView);

高级

RichText
       .from(text) // 数据源
       .type(RichText.TYPE_MARKDOWN) // 数据格式,不设置默认是Html,使用fromMarkdown的默认是Markdown格式
       .autoFix(true) // 是否自动修复,默认true
       .async(true) // 是否异步,默认false
       .fix(imageFixCallback) // 设置自定义修复图片宽高
       .noImage(true) // 不显示并且不加载图片
       .clickable(true) // 是否可点击,默认只有设置了点击监听才可点击
       .imageClick(onImageClickListener) // 设置图片点击回调
       .imageLongClick(onImageLongClickListener) // 设置图片长按回调
       .urlClick(onURLClickListener) // 设置链接点击回调
       .urlLongClick(onUrlLongClickListener) // 设置链接长按回调
       .placeHolder(placeHolder) // 设置加载中显示的占位图
       .error(errorImage) // 设置加载失败的错误图
       .into(textView); // 设置目标TextView

ImageHolder

ImageHolder是在设置了ImageFixCallback后回调方法中的一个参数,代表了每张图片

其属性有:

  • width : 图片宽度
  • height : 图片高度
  • scaleType : 缩放方式
  • imageType : 图片类型,JPG/PNG
  • autoFix : 自动修复宽高
  • autoPlay : 自动播放Gif图,在图片类型是Gif时有效
  • autoStop : 自动停止Gif图片的播放,在图片是Gif时有效
  • show : 是否显示

通过调用对应的getter和setter方法可以获取和设置ImageHolder的状态,并达到相应的功能

自定义修复图片宽高

RichText.from(text).fix(new ImageFixCallback() {
                @Override
                public void onFix(ImageHolder holder,boolean imageReady) {
                     if(imageReady){
                          return;
                     }
                     if(holder.getImageType()==ImageHolder.GIF){
                          holder.setWidth(400);
                          holder.setHeight(400);
                     }else {
                          holder.setAutoFix(true);
                     }
                }
             })

通过设置holder.setAutoFix(true)设置该图片为自动修复,自动修复的效果是图片按宽度充满,所有如果有些小的图片设置了自动填充可能会 失真,这时候可以取消自动修复设置自定义修复,将比较小的图片过滤出来,将其它的图片自动修复即可。

如下:

        RichText.from(text).autoFix(false).fix(new ImageFixCallback() {
            @Override
            public void onFix(ImageHolder holder, boolean imageReady) {
                if (holder.getWidth() > 500 && holder.getHeight() > 500) {
                    holder.setAutoFix(true);
                }
            }
        }).into(textView);

注意,如果img标签中没有宽高的话onFix方法会在图片加载完成前后调用两次,可以通过imageReady来判断

Clone this wiki locally