1 satırından büyükse TextView'umda nasıl üç nokta gösterebilirim?


100

Çalışmayan aşağıdaki Düzene sahibim:

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:id="@+id/experienceLayout" 
    android:background="#ffffff" 
    android:layout_height="match_parent" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp">

    <TextView 
        android:layout_weight="1" 
        android:id="@+id/experienceLabel" 
        android:text="Experience" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:textStyle="bold">
    </TextView>

    <TextView 
        android:id="@+id/experienceTextView" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:ellipsize="end" 
        android:lines="1" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:fadeScrollbars="false">
    </TextView>

</LinearLayout>

Yanıtlar:


287

Bu yaygın bir sorundur. Aşağıdakileri kullanmayı deneyin:

android:scrollHorizontally="true"
android:ellipsize="end" 
android:maxLines="1"

.............. scrollHorizontally, çalışmasını sağlayan "özel sos" dur.


12
Garip ... Denedim android:scrollHorizontally="true"ama işe yaramadı, kullanımdan kaldırılan özelliği kullanmak zorunda kaldım android:singleLine="true".
Gerardo Contijoch

1
evet scrollHorizontally, gerçek anahtar...
Rishabh Dutt Sharma

kaydırma yatay mı? açıkçası yatay kaydırma efekti istemiyorum.
filthy_wizard

@ user1232726: Evet, "yatay olarak kaydır." Sağduyu olarak, sorunun tarihine ve yanıtların tarihine bir göz atın ... hiçbirinin şu anda ilgili olmayabileceğini söylemeye gerek yok (yorum yapmadan önce).
BonanzaDriver

MaxLines ile elips boyutunu kullanmak uygulamanın çökmesine neden olabilir - Android Studio intellisense'den rapor
Vaishnav Mhetre

34

Bu aynı zamanda elips ile tek bir çizgi oluşturacaktır

 android:singleLine="true"

15
Görünüşe göre bu kullanımdan kaldırıldı
Oliver Pearmain

1
Bu uzun kelimeleri kırsa iyi olur.
bpiec

android: maxLines = "1"
Jaydev

1
@grebulon Kullanımdan kaldırılmıştır. En azından şimdi.
Spikatrix

25

Bunu kullan

android:ellipsize="end"  
android:singleLine="true"

Hangi çıktının geldiğini tam olarak bilmeden bunu kullanmayın

android:ellipsize="end"  
android:maxLines="1"

Kullandığınızda maxlines = 1, bir süre karakterlerin çoğunu kısaltacaktır.


13

Benim için birden çok cihazda / API'de çalışma şekli programlı olarak şöyleydi (burada tv, TextView'ınızdır):

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }

2
Bu, hepsinin en yararlı cevabıdır ... her bir API üzerinde çalışır ve onu bir Utils kitaplığına kolayca dönüştürebilir.
Mariano Zorrilla

1
Sen üç nokta karakterini kullanmalısınız \u2026yerine üç .karakterden
Chris Stillwell

Haklısınız @ChrisStillwell ve kodumda üç nokta karakterini kullanıyorum. Cevabı düzenledim, teşekkür ederim. :)
Marilia

3

Dolayısıyla, yukarıdaki tüm yanıtlar yalnızca 1 satır ve ardından üç nokta görünmesi gerekliliğini karşılar. Bununla birlikte, üç noktanın belirli metin satırlarından sonra görünmesini istiyorsanız, aşağıdakileri kullanmalısınız:

android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"

Bununla, üç nokta yalnızca 2 satırdan sonra görünecektir. Not: SingleLine'ın yanlış olması önemlidir.


Dokümantasyona göre varsayılan değer yanlıştır: developer.android.com/reference/android/widget/…
Pierre


-1

android:singleLinekullanımdan kaldırıldı. Benim durumumda, için sabit bir yükseklik almam gerekiyordu TextViewve android:linesbunun yerine özniteliği kullandım android:maxLines. Bunun benimle aynı sorunu yaşayan birine yardımcı olabileceğini düşündüm.

android:ellipsize="end"
android:lines="2"

Doğru değil. Belgeler, kullanımdan
kaldırma

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.