有时在开发中,TextView如果设置了android:ellipsize="end",显示的文字超长是最后超出的部分为以“...”(3个点结束)
碰到一些变态的产品经理他就会闲3个点不好看,非得改为2个点显示,如何做?
下面直接上源码:
private String handleStartListTextView(String content) {
int contactNameTextsize = mContext.getResources().getDimensionPixelSize(R.dimen.contact_name_textsize);
int mLimitContactsLength = mContext.getResources().getDimensionPixelSize(R.dimen.limit_contacts_length);
Paint paint = new Paint();
paint.setTextSize(contactNameTextsize);
float pointWidth = paint.measureText("..");
if (content == null)
return "";
char[] textCharArray = content.toCharArray();
//已绘的宽度
float drawedWidth = 0;
float charWidth;
for (int i = 0; i < textCharArray.length; i++) {
charWidth = paint.measureText(textCharArray, i, 1);
if (mLimitContactsLength - drawedWidth - pointWidth < charWidth) {
return content.subSequence(0, i)+"..";
} else {
drawedWidth += charWidth;
}
}
return content;
}