標籤:
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()
Android TextView 常見問題匯總