/**
*
* @param context 上下文
* @param originText 原文字
* @param textView 空间
* @param words 关键字
* @return 截取后的字段
*/
public static String getLineMaxNumber(Context context,String originText, TextView textView,String words) {
//获取原文字长度
float originTextWidth = textView.getPaint().measureText(originText);
Log.e("长度","originTextWidth:"+originTextWidth);
//获取控件长度
float textViewWidth = getScreenWidthInPx(context)-dp2px(context,80);
Log.e("长度","textViewWidth:"+textViewWidth);
//控件长度大于文字长度 直接显示
if (textViewWidth >= originTextWidth) {
return originText;
} else {
//计算是否超出两行
float lineNum=originTextWidth/textViewWidth;
if (lineNum>2){
//预计行数大于两行时
int wordIndex=originText.indexOf(words);
String spannerText=originText.substring(0,wordIndex)+words;
float splitTextWidth = textView.getPaint().measureText(spannerText);
Log.e("长度","spannerText:"+spannerText);
//计算到第一个关键字时 是否超过两行
float splitLineNum=splitTextWidth/textViewWidth;
if (splitLineNum>2){
if (originText.endsWith(words)){
//如果关键字在最后一个 往前截取8个字符
return "..."+originText.substring(wordIndex-8);
}
Log.e("长度","spannerText:"+originText.substring(wordIndex));
return "..."+originText.substring(wordIndex);
}else {
return originText;
}
}else {
return originText;
}
}
}
效果
效果类似qq的聊天记录搜索