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.