日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 决TextView中MaxLines与ellipsize=end冲突问题

發布時間:2024/4/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 决TextView中MaxLines与ellipsize=end冲突问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天,講講如何在多行文本后顯示省略號。


TextView控件有一個屬性是ellipsize,指的是當文字內容長度超過TextView大小時顯示問題,一般情況下我們都是用省略號表示,常用的情況有以下四種:

1,Android:ellipsize = "end"   ?省略號在結尾

3,android:ellipsize = "start"?  省略號在開頭

3,android:ellipsize = "middle" ? ??省略號在中間

4,android:ellipsize = "marquee" ?跑馬燈

但是我們遇到的問題是,這幾個屬性一般只有在設置了android:singleline = "true"的時候才有效,此時只能顯示一行文字,但是當我們的TextView要顯示多行文字,比如我們設置了android:maxLines="3"時,我們肯定不能設置android:singleline = "true",此時的android:ellipsize=“end”就失去效果了。MaxLines與ellipsize=end沖突問題糾結我很久,在網上打了不少資料,加上自己工作中的實際情況,寫了個工具類,測試了好幾款手機都沒有問題,把主要代碼貼出來,請大家多指教!

? ????/** ?????*?參數:maxLines?要限制的最大行數 ? ? ?* 參數:content ?指TextView中要顯示的內容 ?????*/ ????public?void?setMaxEcplise(final?TextView?mTextView,?final?int?maxLines,?final?String?content)?{
????????ViewTreeObserver?observer?=?mTextView.getViewTreeObserver(); ????????observer.addOnGlobalLayoutListener(new?OnGlobalLayoutListener()?{ ????????????@Override ????????????public?void?onGlobalLayout()?{ ????????????????mTextView.setText(content); ????????????????if?(mTextView.getLineCount()?>?maxLines)?{ ????????????????????int?lineEndIndex?=?mTextView.getLayout().getLineEnd(maxLines?-?1); ? ? ? ? ? ? ? ? ? ? //下面這句代碼中:我在項目中用數字3發現效果不好,改成1了
????????????????????String?text?=?content.subSequence(0,?lineEndIndex?-?3)?+?"..."; ????????????????????mTextView.setText(text); ????????????????} ????????????????else?{ ????????????????????removeGlobalOnLayoutListener(mTextView.getViewTreeObserver(),?this); ????????????????} ????????????} ????????}); ????}
????@SuppressWarnings("deprecation") ????@SuppressLint("NewApi") ????private?void?removeGlobalOnLayoutListener(ViewTreeObserver?obs,?OnGlobalLayoutListener?listener)?{ ????????if?(obs?==?null) ????????????return; ????????if?(Build.VERSION.SDK_INT?<?16)?{ ????????????obs.removeGlobalOnLayoutListener(listener); ????????} ????????else?{ ????????????obs.removeOnGlobalLayoutListener(listener); ????????} ????}

以上只是相關的方法代碼,傳入相應的參數就可以了


這個其實很簡單,只是判斷文檔數是否大于3行,如果大于,則只顯示3行的文本,然后加入省略號。


android 決TextView中MaxLines與ellipsize=end沖突問題就講完了。


就這么簡單。









 與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的android 决TextView中MaxLines与ellipsize=end冲突问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。