1超出固定寬度,ellipsize ; layoutwidth="60dp"
2超出單位寬度 , maxems;?maxEms單行會自帶省略號,maxEms 只有控件wrap_content才有效;并且得加上android:ellipsize="end"android:maxEms="12"android:maxLines="1"
【TextView】Android TextView顯示省略號的問題(關(guān)于TextView maxLength 和maxEms的學(xué)習(xí))
2016年10月19日 18:15:57?彼岸花you?閱讀數(shù):10859
1). maxLength
作用:設(shè)置TextView 文本顯示的個數(shù)
理解:把text的字符取出來,截取了指定個數(shù)個字符,然后將截取的字符放到控件中去。和省略號無關(guān)
2)、maxEms
作用:設(shè)置TextView文本顯示的長度(單位ems),設(shè)置match_parent和固定的dp值 之后,maxEms 無效。
使用:?
maxEms和字符的個數(shù)沒有關(guān)系,這里說的ems更像是一種單位。?
當(dāng)文本超過了指定的ems值得時候,有兩種情況:?
1) 單行:maxEms的設(shè)置會主動顯示省略號(不添加ellipsize也會有省略號,有中文省略號是三個點(diǎn),其余的省略號就可能只有一個點(diǎn))?
2) 多行:換行繼續(xù)顯示剩下的內(nèi)容,如果這一行也到達(dá)了指定的位置,則繼續(xù)換行顯示。maxEms不會主動添加省略號。這個時候,如果想要添加省略號,就需要使用到ellipsize=”end”這個屬性。
理解:只有設(shè)置wrap_content時,maxEms才有效。ellipsize 比較像直接設(shè)置控件的寬,忽略其中小小的差別。
maxLength和省略號無關(guān);?
解決方案:
maxEms單行會自帶省略號,maxEms 只有控件wrap_content才有效;
直接設(shè)置控件寬度 ,當(dāng)文本超過這個長度的時候,會自動添加省略號(多行的時候,不會自動添加省略號,和maxEms一致);
只能借助ellipsize屬性,并且這里的實(shí)現(xiàn)效果也只是在達(dá)到整行的時候,如果還有數(shù)據(jù)需要顯示,則顯示省略號。
4、限定TextView顯示字符的個數(shù),多余的顯示省略號
需求:TextView只能顯示8個字符,有多余字符的時候顯示省略號?
思考:?
通過maxEms 并不能指定字符個數(shù)。?
不知道要怎么做了,唯一想到的是在界面初始化的時候,獲取到控件的字符,在代碼中進(jìn)行字符處理(保存原有數(shù)據(jù),判斷有多少個字符,多余字符顯示省略號等),將處理后的數(shù)據(jù)顯示到界面上。