QQ羣:372135639
android:singleLine=”true” 數字英文字母顯示,省略號只有一個點的問題。
問題描述:
使用SingleLine屬性時,當字符串含有純數字或者字母的時候,自動截取的省略號,只有一個點。而漢字 字符串或者混合字符串就不會出現該問題。
問題解決方法:
據悉這是Android4.0後原生代碼的Bug,TextView賦值的字符串後邊接一個 全角的空格
singleLine=”true”與Android:maxLines=”1”的不同之處
問題描述:
Android 的TextView 裏面有兩個屬性 singLine 和maxLines 。 從字面意思來理解,這兩個都是限制Text的行數。那麼singleLine=”true” 和maxLine=”1” 都是限制爲一行,有什麼區別呢?
先看看Google Document 的解釋:
android:maxLines
Makes the TextView be at most this many lines tall.
android:singleLine
Constrains the text to a single horizontally scrolling line instead of letting it wrap onto multiple lines, and advances focus instead of inserting a newline when you press the enter key.
maxLines 是在限制高度, singleLine 是強制不讓換行。具體效果有什麼區別呢? 從高度來講是一樣的,兩者肯定都顯示一行,但從換行的位置來講就有區別了,maxLines並不會改變其換行的位置,而singleLine則會。從這個角度講,singleLine的顯示會好一些,因爲如果超過一行singleLine會在一行內顯示,後面加上”…”。而maxlines=”1” 則不會,它依然會在原來換行的位置換行,所以有時候一行不滿,但是卻不顯示剩下的部分。
同樣一句話 maxLines截取之後顯示不全,singleLine就會在一行範圍內全部顯示。
例如:鍢庡槑0009912 這個字符串。
maxLines效果是: 鍢
singleLine效果是: 鍢庡槑00
如果都加上android:ellipsize=“end”
maxLines效果是: 鍢...
singleLine效果是: 鍢庡槑00...
總而言之,如果你要用省略號截取字符串顯示,建議用singleLine。如果你要控制顯示行數,建議用maxLines。
android:ellipsize 的屬性的使用
**EidtText和textview中內容過長的話自動換行,使用android:ellipsize與android:singleine可以解決,使只有一行。
EditText不支持marquee
用法如下:
在xml中
android:ellipsize = "end" 省略號在結尾
android:ellipsize = "start" 省略號在開頭
android:ellipsize = "middle" 省略號在中間
android:ellipsize = "marquee" 跑馬燈
android:singleline = "true"
當然也可以用代碼語句
tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
tv.setSingleLine(true);
android:ellipsize 與 android:maxLines 屬性衝突的問題
問題描述:
當TextView中的文本內容長度超過了TextView的寬度,如果是單行,超出部分將被截斷,此時我們都會使用android:ellipsize,該屬性可以用了來省略顯示文本,但很可能不像我們原以爲的那樣工作。
很多人認爲這是屬性衝突造成的,其實不然。
下方的紅色很重要,由於在通用控件中可能設置了 singleLine = true;
所以直接使用setMaxLines(n),是不起作用的
解決方法如下:
TextView tv_text = (TextView) vDescParent.findViewById(R.id.tv_text);
tv_text.setText(ss.toString());
// 設置可以多行顯示
tv_text.setSingleLine(false);
tv_text.setMaxLines(3);
tv_text.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
或者:
Android中android:ellipsize與android:maxLines屬性不衝突,
只是跟append()方法衝突,
需要把內容拼成一字符串
然後setText()