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>

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.


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


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.


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);
    }

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.


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"

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.