很糾結的一個标題,實在是不知道怎麼去描述這個現象。
上圖檔吧,先看看需求是什麼樣的。
1.需求:
視訊與票的圖示跟在标題後面顯示,當标題過長時icon顯示到省略号…後(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);
}