Richtext富文本使用

2020-01-17  本文已影响0人  on_i_on

[https://github.com/zzhoujay/RichText github地址]

RichText只支持图片点击和链接点击,局部文字点击没有看到怎么使用。这里稍作补充:

/**
 * 需要局部高亮加下划线的文字
 * @param string
 * @return
 */
private SpannableString getRichText(String string) {
    SpannableString spannableString = new SpannableString(string);
    int start = 0;
    // 根据不同的情况决定开始高亮加下划线的位置
    if (mSelectTypePos == 0) {
        start = string.indexOf("6.") + 2;
    } else {
        start = string.indexOf("5.") + 2;
    }
    int end = string.length();
    //高亮
    spannableString.setSpan(clickSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //加下划线
    spannableString.setSpan(underlineSpan, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//SPAN_INCLUSIVE_EXCLUSIVE
    return spannableString;
}
//高亮部分点击响应
ClickableSpan clickSpan = new ClickableSpan() {
    @Override
    public void onClick(View widget) {
        。。。
    }

    @Override
    public void updateDrawState(TextPaint ds) {

    }
};
//加下划线
UnderlineSpan underlineSpan = new UnderlineSpan() {
    @Override
    public void updateDrawState(TextPaint ds) {
        ds.setColor(getResources().getColor(R.color.linkColor));
        ds.setUnderlineText(true);
    }
};

//使用
textview.setText(getText("需要部分高亮架线划线的文字"));
textview.setMovementMethod(LinkMovementMethod.getInstance());//不加这句不响应点击事件

/-----------------------------------------------------------------------------------------------------/

下面是RichText的使用介绍

gradle中引用的方法
compile 'com.zzhoujay.richtext:richtext:2.5.2'
设置数据源类型
// 设置为Html
RichText.fromHtml(text).into(textView);
// 设置为Markdown
RichText.fromMarkdown(text).into(textView);
资源释放
// activity onDestory时
RichText.clear(activity);
//在应用退出时调用
RichText.recycle();
所有方法
RichText
   .from(text) // 数据源
   .type(RichText.TYPE_MARKDOWN) // 数据格式,不设置默认是Html,使用fromMarkdown的默认是Markdown格式
   .autoFix(true) // 是否自动修复,默认true
   .autoPlay(true) // gif图片是否自动播放
   .showBorder(true) // 是否显示图片边框
   .borderColor(Color.RED) // 图片边框颜色
   .borderSize(10) // 边框尺寸
   .borderRadius(50) // 图片边框圆角弧度
   .scaleType(ImageHolder.ScaleType.FIT_CENTER) // 图片缩放方式
   .size(ImageHolder.MATCH_PARENT, ImageHolder.WRAP_CONTENT) // 图片占位区域的宽高
   .fix(imageFixCallback) // 设置自定义修复图片宽高
   .fixLink(linkFixCallback) // 设置链接自定义回调
   .noImage(true) // 不显示并且不加载图片
   .resetSize(false) // 默认false,是否忽略img标签中的宽高尺寸(只在img标签中存在宽高时才有效),true:忽略标签中的尺寸并触发SIZE_READY回调,false:使用img标签中的宽高尺寸,不触发SIZE_READY回调
   .clickable(true) // 是否可点击,默认只有设置了点击监听才可点击
   .imageClick(onImageClickListener) // 设置图片点击回调
   .imageLongClick(onImageLongClickListener) // 设置图片长按回调
   .urlClick(onURLClickListener) // 设置链接点击回调
   .urlLongClick(onUrlLongClickListener) // 设置链接长按回调
   .placeHolder(placeHolder) // 设置加载中显示的占位图
   .error(errorImage) // 设置加载失败的错误图
   .cache(Cache.ALL) // 缓存类型,默认为Cache.ALL(缓存图片和图片大小信息和文本样式信息)
   .imageGetter(yourImageGetter) // 设置图片加载器,默认为DefaultImageGetter,使用okhttp实现
   .bind(tag) // 绑定richText对象到某个object上,方便后面的清理
   .done(callback) // 解析完成回调
   .into(textView); // 设置目标TextView
上一篇下一篇

猜你喜欢

热点阅读