天天看點

android中Textview 和圖檔同時顯示時,文字省略号顯示,圖檔自動靠到右邊

              很糾結的一個标題,實在是不知道怎麼去描述這個現象。

              上圖檔吧,先看看需求是什麼樣的。

1.需求:

                 視訊與票的圖示跟在标題後面顯示,當标題過長時icon顯示到省略号…後(textview省略号顯示,圖示自動靠後)。

                ​

android中Textview 和圖檔同時顯示時,文字省略号顯示,圖檔自動靠到右邊

                ​

android中Textview 和圖檔同時顯示時,文字省略号顯示,圖檔自動靠到右邊
android中Textview 和圖檔同時顯示時,文字省略号顯示,圖檔自動靠到右邊

543·134

2. 問題解決

           本來是一個很正常的需求,看起來很簡單,但是做起來卻遇到了很蛋疼的問題,怎麼搞的都不行,堵了很長時間,下面說一下解決方案,遇到這樣問題的朋友可以使用。

              TextView可以通過 android:ellipsize="end" android:singleLine="true"實作單行省略, 

              但是當我們要是圖示跟着文字後面,第一時間想到用LinearLayout的layout_weight 來做,但是做出來效果不一樣。

            後來竟然忘記這個屬性了:指定TextView的最大寬度實作自動省略 android:maxWidth="90dp",加上這個就解決了。

           但是問題來了,這個值不能寫成固定的,要根據螢幕進行适配。可以計算螢幕的寬度,然後動态進行數值的添加。代碼如下:

// 進行計算螢幕寬度,動态顯示
        DisplayMetrics dm = new DisplayMetrics();
        ((Activity) mContext).getWindowManager().getDefaultDisplay().getMetrics(dm);
        int width = dm.widthPixels;
        holder.tv_postbar_item_title.setMaxWidth(width - UIUtils.getPixels(TypedValue.COMPLEX_UNIT_DIP, 78));      

裡面使用的px轉換類為:

public static int getPixels(int Unit, float size) {
        DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics();
        return (int) TypedValue.applyDimension(Unit, size, metrics);
    }