[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