因为某些不知名bug,使得我在实现TextView单行超出部分显示为省略号的时候使用这个方法
android:maxLines="1"
android:ellipsize="end"
的时候,有时候只显示省略号不显示内容,有时候不显示省略号,因此笔者尝试自定义实现这个功能。这里举例20px的字体大小。
TextPaint textPaint = new TextPaint();
textPaint.setTextSize(context.getResources().getDisplayMetrics().scaledDensity * 20);
String displayStr = dataStr;
if (textPaint.measureText(dataStr) > textView.getWidth()) {
while (textPaint.measureText(displayStr) >= (textView.getWidth() - textPaint.measureText("..."))) {
displayStr = displayStr.substring(0, displayStr.length() - 1);
}
displayStr += "...";
}
textView.setText(displayStr);