参考:http://zilla.blog.51cto.com/3095640/984775
效果图:
实现代码:
// 监听布局变化,直接获取显示的长度
txtDescription.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if(availableTextWidth == 0&&txtDescription.getWidth()>0){
TextPaint paint = txtDescription.getPaint();
int paddingLeft = txtDescription.getPaddingLeft();
int paddingRight= txtDescription.getPaddingRight();
int bufferWidth =(int) paint.getTextSize()*3;//缓冲区长度,空出两个字符的长度来给最后的省略号及图片
// 计算出2行文字所能显示的长度
availableTextWidth = (txtDescription.getWidth() - paddingLeft - paddingRight) * LINE_COUNT- bufferWidth;
// 根据长度截取出剪裁后的文字
String ellipsizeStr = (String) Text