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.