很糾結的一個標題,實在是不知道怎么去描述這個現象。
上圖片吧,先看看需求是什么樣的。
1.需求:
視頻與票的圖標跟在標題后面顯示,當標題過長時icon顯示到省略號…后(textview省略號顯示,圖標自動靠后)。
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); }