Saya perlu ellipsize textview multi-line. Komponen saya cukup besar untuk menampilkan setidaknya 4 baris dengan elips, tetapi hanya 2 baris yang ditampilkan. Saya mencoba mengubah jumlah minimum dan maksimum baris komponen tetapi tidak mengubah apa pun.
163
Jawaban:
Ini solusi untuk masalah ini. Ini adalah subkelas dari TextView yang benar-benar berfungsi untuk ellipsizing. Kode android-textview-multiline-ellipse tercantum dalam jawaban sebelumnya yang saya temukan bermasalah dalam keadaan tertentu, serta berada di bawah GPL, yang sebenarnya tidak bekerja untuk kebanyakan dari kita. Jangan ragu untuk menggunakan kode ini secara bebas dan tanpa atribusi, atau di bawah lisensi Apache jika Anda mau. Perhatikan bahwa ada pendengar yang memberi tahu Anda ketika teks menjadi ellipsized, yang menurut saya cukup berguna.
sumber
Dalam aplikasi saya, saya memiliki masalah yang sama: 2 baris string dan, akhirnya, tambahkan "..." jika string terlalu panjang. Saya menggunakan kode ini dalam file xml ke dalam tag tampilan teks:
sumber
setText(..., TextView.BufferType.SPANNABLE);
.Saya juga mengalami masalah ini. Ada bug yang agak lama tentang hal itu yang tetap tidak terjawab: Bug 2254
sumber
Coba ini, ini berfungsi untuk saya, saya punya 4 baris dan menambahkan "..." ke akhir baris terakhir / keempat. Itu sama dengan jawaban moral tetapi saya memiliki singeLine = "false" di sana.
sumber
Mendapat masalah ini, dan akhirnya, saya membuat solusi singkat untuk diri saya sendiri. Anda hanya perlu ellipsize secara manual baris yang Anda inginkan, atribut maxLine Anda akan memotong teks Anda.
Contoh ini memotong maksimal 3 baris teks Anda
sumber
Saya menggabungkan solusi oleh Micah Hainline, Alex Băluț, dan Paul Imhoff untuk membuat multil ellipsizing multiline
TextView
yang juga mendukungSpanned
teks.Anda hanya perlu mengatur
android:ellipsize
danandroid:maxLines
.Sumber lengkap: EllipsizingTextView.java
sumber
Dalam kasus saya, tidak perlu kode ini di Jawa. Semuanya berfungsi seperti yang diharapkan. Tidak perlu sesuatu seperti itu
android:singleLine="false"
.Tetapi tampaknya ada bug di pratinjau tata letak Android Studio (v3.0):
Diberikan Android 7.1.1 di perangkat saya ini berfungsi:
sumber
Berdasarkan solusi oleh Micah Hainline dan komentar alebs, saya datang dengan pendekatan berikut yang bekerja dengan teks Spanned, sehingga mis
myTextView.setText(Html.fromHtml("<b>Testheader</b> - Testcontent"));
berfungsi! Perhatikan bahwa ini hanya berfungsiSpanned
sekarang. Mungkin bisa dimodifikasi untuk bekerjaString
dan denganSpanned
cara apa pun.sumber
Bagi mereka yang tertarik, berikut adalah porta C # Xamarin.Android dari solusi bagus Micah:
sumber
Untuk menambahkan
...
di akhir baris kedua, simpan 1 baris jika teks pendek:sumber
Cukup tambahkan kode dalam aktivitas Anda
ini akan menambahkan ellipsis di akhir textview
sumber
Perluas TextView dan timpa metode ini:
sumber
Ini solusi saya. Anda dapat mengunduh demo di github saya. https://github.com/krossford/KrossLib/tree/master/android-project
Tangkapan layar ini adalah demo
maxLines = 4
, saya pikir itu berfungsi dengan baik.sumber
Saya memiliki masalah yang sama. Saya memperbaikinya dengan hanya menghapus android: ellipsize = "marquee"
sumber
Kode bekerja dengan sangat baik! Anda dapat membebani metode onSizeChanged, jika tidak hanya Teks yang harus diubah.
sumber
Yang ini juga menangani html saya,
LINK Sumber Asal
sumber
Jawaban teratas di sini dari Micah Hainline sangat bagus, tetapi yang lebih baik lagi adalah perpustakaan yang dibangun oleh pengguna aleb saat ia memposting di komentar di bawah jawaban Micahs:
Ada beberapa fitur untuk itu, jika Anda hanya perlu TextView, ada di sini .
Mungkin ini akan membantu orang lain menemukannya lebih cepat daripada saya :-)
sumber
Ini terlambat, tetapi saya menemukan kelas berlisensi Apache dari Android, yang digunakan di aplikasi surat stok: https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/184ec73/src/com/android/ mail / ui / EllipsizedMultilineTextView.java
sumber
Ada beberapa atribut yang harus Anda periksa: android: lines, android: minLines, android: maxLines. Untuk menampilkan maksimal 4 baris dan ellipsize, Anda hanya perlu android: maxLines dan android: ellipsize:
sumber
Anda harus memasukkan ini dalam tampilan teks Anda:
secara default itu benar. Anda harus secara eksplisit menjadikannya salah.
sumber
code <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="4" android:ellipsize="marquee" android:singleLine="false" android:text="Hai make this a very long string that wraps at least 4 lines!" />