有時在開發中,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;
}