在項(xiàng)目需求中随闺,需要在文本超出本行后截取超出的內(nèi)容和其他信息組合起來(lái),這樣的需求蔓腐,單單設(shè)置文本的android:ellipsize="end"
屬性值是不夠的矩乐,我們還需要知道文本中被省略的內(nèi)容,這就需要我們另辟蹊徑了回论!
-
主要的獲取方法是textview的
getEllipsisCount
函數(shù):獲取被省略的字符數(shù)散罕,0表示沒(méi)有省略
int ellipsisCount = textView.getLayout().getEllipsisCount(textView.getLineCount() - 1);
- 如果直接在onCreate方法中調(diào)用
textView.getLayout()
可能返回為空】兀可以待textView繪制完成之后再調(diào)用欧漱。
<!--XML布局中的textView-->
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:ellipsize="end"
android:gravity="center_vertical"
android:maxLines="1"
android:textColor="@color/color_222222"
android:textSize="@dimen/sp_16" />
/**Activity中的實(shí)現(xiàn)邏輯**/
String strName = "你所要獲取的內(nèi)容字符串";
textView.setText(strName);
textView.post(new Runnable() {
@Override
public void run() {
// (此處注掉是因?yàn)锳ndroid版本6.0以下獲取總是返回1)獲取被省略的字符數(shù),0表示沒(méi)有省略
// int ellipsisCount = textView.getLayout().getEllipsisCount(textView.getLineCount() - 1);
// 從第幾個(gè)字符開(kāi)始省略的
int ellipsisStart = tvBookName.getLayout().getEllipsisStart(textView.getLineCount() - 1);
if (ellipsisStart > 0
&& strName.length() - ellipsisStart > 0
&& !StringUtils.isEmpty(strName)) {
String substring = strName.substring(0, ellipsisStart );
textView.setText(substring);
// 將原文中的超出部分截取出來(lái)葬燎,在textview2中顯示
String substring2 = strName.replace(substring, "");
textView2.setText(substring2 + "這里是超出部分的截取顯示");
}
}
});
剩下的就是根據(jù)你自己的需求進(jìn)行截取了误甚,祝君好運(yùn)缚甩!新年快樂(lè)~!
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者