Bagaimana cara menampilkan elipsis di TextView saya jika lebih besar dari 1 baris?

100

Saya memiliki Tata Letak berikut yang tidak berfungsi:

<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>
Sheehan Alam
sumber

Jawaban:

286

Ini masalah umum. Coba gunakan yang berikut ini:

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

.............. gulungan Secara horizontal adalah "saus spesial" yang membuatnya bekerja.

BonanzaDriver
sumber
12
Aneh ... Saya mencoba android:scrollHorizontally="true"tetapi tidak berhasil, saya harus menggunakan atribut deprecated android:singleLine="true".
Gerardo Contijoch
1
ya scrollHorizontallyadalah kunci sebenarnya untuk...
Rishabh Dutt Sharma
scrollHorizontally? jelas saya tidak ingin efek gulir horizontal.
filthy_wizard
@ user1232726: Ya, "gulir secara horizontal". Sebagai masalah akal sehat, lihatlah tanggal pertanyaan dan tanggal tanggapan ... tanpa perlu dikatakan bahwa saat ini tidak ada yang relevan (sebelum berkomentar).
BonanzaDriver
Menggunakan elipsize dengan maxLines dapat membuat aplikasi mogok - Laporan dari Android Studio intellisense
Vaishnav Mhetre
34

Ini juga akan membuat satu baris dengan elipsise

 android:singleLine="true"
Atul Bhardwaj
sumber
15
Tampaknya ini tidak berlaku lagi
Oliver Pearmain
1
Yang ini lebih baik mematahkan kata-kata panjang.
bpiec
android: maxLines = "1"
Jaydev
1
@grebulon Sudah usang. Setidaknya sekarang.
Spikatrix
25

Gunakan ini

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

Jangan gunakan ini tanpa sepenuhnya menyadari keluaran apa yang datang

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

Saat Anda menggunakannya maxlines = 1, beberapa saat akan memotong sebagian besar karakter.

Mohamed Ibrahim
sumber
12

Cara kerjanya untuk saya di beberapa perangkat / API secara terprogram seperti ini (di mana tv adalah TextView Anda):

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }
Marilia
sumber
2
Ini adalah jawaban yang paling membantu dari semuanya ... berfungsi pada setiap API dan dapat dengan mudah mengubahnya sebagai pustaka Utils.
Mariano Zorrilla
1
Anda harus menggunakan karakter elipsis \u2026daripada tiga .karakter
Chris Stillwell
Anda benar @ChrisStillwell dan saya menggunakan karakter elipsis dalam kode saya. Saya sudah mengedit jawabannya, terima kasih. :)
Marilia
3

Jadi semua jawaban di atas memenuhi persyaratan bahwa hanya 1 baris dan elipsis harus muncul. Namun jika Anda ingin elipsis muncul setelah baris teks tertentu, maka Anda harus menggunakan yang berikut ini:

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

Dengan ini elipsis hanya akan muncul setelah 2 baris. Catatan: Penting untuk menggunakan singleLine sebagai false.

SDK4551
sumber
Nilai defaultnya salah menurut dokumentasi: developer.android.com/reference/android/widget/…
Pierre
-1

android:singleLinesudah ditinggalkan. Dalam kasus saya, saya harus mendapatkan ketinggian tetap untuk TextViewdan saya menggunakan android:linesatribut sebagai ganti android:maxLines. Saya pikir ini mungkin membantu seseorang yang memiliki masalah yang sama dengan saya.

android:ellipsize="end"
android:lines="2"
Reaz Murshed
sumber
Tidak benar. Dokumentasi tidak menyebutkan apa pun tentang penghentian: developer.android.com/reference/android/widget/…
cesards
@cesards Menarik. Dokumen ini mengatakan bahwa itu adalah - developer.android.com/reference/android/R.attr.html#singleLine
Reaz Murshed