使用 textView.getLayout().getEllipsisStart(0) 仅适用于 android:singleLine="true"
如果设置了 android:maxLines,这是一个可行的解决方案:
public static String getEllipsisText(TextView textView) {
// test that we have a textview and it has text
if (textView==null || TextUtils.isEmpty(textView.getText())) return null;
Layout l = textView.getLayout();
if (l!=null) {
// find the last visible position
int end = l.getLineEnd(textView.getMaxLines()-1);
// get only the text after that position
return textView.getText().toString().substring(end);
}
return null;
}
请记住:这在视图已经可见之后才起作用。
用法:
textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
Log.i("test" ,"EllipsisText="+getEllipsisText(textView));
}
});