textContent.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
//这个监听的回调是异步的,在监听完以后一定要把绘制监听移除,不然这个会一直回调,导致界面错乱
textContent.getViewTreeObserver().removeOnPreDrawListener(this);
//获取字行数
int lineCount = textContent.getLineCount();
//55是左右的margin
int windowWidth = ScreenUtils.getScreenWidth()-55;
int zNumber = Math.round(windowWidth/textContent.getTextSize());
if(lineCount>3){
SpannableStringBuilder builder = new SpannableStringBuilder();
//减6是为了加上...跟全文
String substring = spannableString.toString().substring(0, zNumber * 3 - 6);
if(!TextUtils.isEmpty(huaTi)){
builder.append(substring)
.append("...")
.append("全文")
.setSpan(clickableSpan, 0, huaTi.length()+1, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.blue_shense)),
0, huaTi.length()+2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.blue_shense)),
builder.length()-5, builder.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(clickableSpan2,huaTi.length()+1,builder.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textContent.setText(builder);
}else {
builder.append(substring)
.append("...")
.append("全文")
.setSpan(clickableSpan2, 0, builder.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
builder.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.blue_shense)),
builder.length()-5, builder.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textContent.setText(builder);
}
}else{
//原来的
if(!TextUtils.isEmpty(huaTi)){
spannableString.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.blue_shense)),
0, huaTi.length()+2, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
spannableString.setSpan(clickableSpan,0,huaTi.length()+1,Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
spannableString.setSpan(clickableSpan2,huaTi.length()+1,spannableString.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textContent.setText(spannableString);
}
return true;
}
});
TextView用SpannableStringBuilder加全文以及不同点击事件
最新推荐文章于 2023-07-17 02:39:33 发布
1866

被折叠的 条评论
为什么被折叠?



