Android TextView 常見問題匯總

來源:互聯網
上載者:User

標籤:

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 常見問題匯總

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.