TextView ellipsize 末尾省略号 保留最后一个字符

/**
 * 自定义Textview 超过最大行数 末尾显示省略号和最后一个字符
 * 使用这个 控件 getText 的内容是不完整的
 */

public class SymbolTextView extends TextView {

    public SymbolTextView(Context context) {
        super(context);
    }

    public SymbolTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SymbolTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        if (getLineCount() == 0) {
            return;
        }
        if(getLayout()==null) {
            return;
        }
        int ellipsisCount = getLayout().getEllipsisCount(getLineCount() - 1);
        if (ellipsisCount == 0) {
            return;
        }
        String content = getText().toString();
        String lastChar = content.substring(content.length() - 1, content.length());
        int measuredWidth = getMeasuredWidth();
        int lineCount = getLineCount();
        int maxMW = measuredWidth * lineCount;
        while (getPaint().measureText(content + "..." + lastChar) > maxMW) {
            content = content.substring(0, content.length() - 1);
        }
        setText(content + "..." + lastChar);
    }
}

布局需要设置 maxLines  和 ellipsize


你可能感兴趣的:(Android,textView,省略号)