Android: TextView, String'in son 3 karakterini otomatik olarak keser ve değiştirir


133

A String, TextViewgenişliğinden daha uzunsa, otomatik olarak sonraki satıra geçer. Bunu kullanarak android:singleLine(kullanımdan kaldırıldı) veya ayarlayarak bunu önleyebilirim android:inputType="text". Şimdi ihtiyacım olan şey, benim son 3 karakterimin yerine String" ... " olan bir şey. Tek aralıklı bir yazı tipi kullanmadığım için, bu her zaman bende kullanılan harflere göre farklı olacaktır String. Bu yüzden, bir String'in son 3 karakterini a'dan TextViewalıp değiştirmenin en iyi yolunun ne olduğunu merak ediyorum . Belki de Android çerçevesinde zaten uygulanmış bir şey vardır, çünkü bu yaygın bir sorun olmalıdır.

Yanıtlar:


292

Bir metin görünümünün "ellipsize" özelliğini kullanabilmeniz gerekir:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Ayrıca yerleşim planına yerçekimi değerleri de uygulamanız gerekebilir; Bazen bunlar olmadan "otomatik germe" görünümleri gördüm.


Mükemmel. Teşekkürler. Bunu daha önce denedim, ancak işe yaramadı çünkü android: singleLine = "true" yerine android: inputType = "text" kullandım (kullanımdan kaldırılması gerekiyordu). Ama şimdi android: singleLine = "true" ile devam edeceğim. Muchas gracias.
znq

44
Yine de "..." eklemiyor. Benim için bu soru tam olarak cevaplanmadı! Bu cevap "kısa çok uzun kelimeyi" sadece "kısa" yapacak ve "kısa verylon ..." yapmayacaktır. Üstelik sizler, kullanımdan kaldırılmış bir öznitelik kullanmanızı öneriyorsunuz.
OneWorld

7
Harika çalışıyor, ancak singleLine kullanımdan kaldırıldı, bu nedenle bunun yerine maxLines = "1" kullanmanız gerekir. Yan not, elips, birden fazla satırla da çalışır!
Torre Lasley

4
singleLine kullanımdan kaldırıldı. MaxLines = "1" kullanın. eski cevaba sadece bir yorum
Ewoks

1
MaxLine = 1, ortadaki metin görünümünü kesecektir. SingleLine = True beklendiği gibi çalışıyor.
Snake

33

Bu problem için ilginç bir çalışma alanı buldum.

maxLines=1
ellipsize=end
scrollHorizontally=true

İşin püf noktası, yatay kaydırmayla ilgili son ifade .... kontrol edin. En azından v2.2'de çalışır.


İlginç ... bilmek güzel. Uyarı için teşekkürler Marco.
BonanzaDriver

4

Programlı olarak şunları kullanabilirsiniz:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.