textContent.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {@Overridepublic boolean onPreDraw() {//这个监听的回调是异步的,在监听完以后一定要把绘制监听移除,不然这个会一直回调,导致界面错乱textContent.getViewTreeObserver().removeOnPreDrawListener(this);//获取字行数int lineCount = textContent.getLineCount();//55是左右的marginint 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;} });