Android: TextView secara otomatis memotong dan mengganti 3 karakter terakhir dari String


131

Jika a Stringlebih panjang dari TextViewlebar, maka secara otomatis membungkus ke baris berikutnya. Saya dapat menghindari ini dengan menggunakan android:singleLine(usang) atau dengan menetapkan android:inputType="text". Yang saya butuhkan sekarang adalah sesuatu yang menggantikan 3 karakter terakhir saya Stringdengan " ... ". Karena saya tidak menggunakan font monospace ini akan selalu berbeda tergantung pada huruf yang digunakan dalam bahasa saya String. Jadi saya bertanya-tanya apa cara terbaik untuk mendapatkan 3 karakter terakhir dari String TextViewdan menggantinya. Mungkin sudah ada sesuatu yang diterapkan dalam kerangka Android, karena ini pasti masalah umum.

Jawaban:


290

Anda harus dapat menggunakan properti "ellipsize" dari tampilan teks:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Anda mungkin juga perlu menerapkan nilai gravitasi ke tata letak juga; Saya terkadang melihat pemandangan "peregangan otomatis" tanpa mereka.


Sempurna. Terima kasih. Saya sudah mencobanya sebelumnya, tetapi tidak berhasil, karena saya menggunakan android: inputType = "text", bukan android: singleLine = "true" (yang seharusnya sudah usang). Tapi sekarang saya akan tetap dengan android: singleLine = "true". Terima kasih banyak.
znq

44
Masih tidak menambahkan "...". Bagi saya, pertanyaan ini belum terjawab sepenuhnya! Jawaban ini akan membuat "kata pendek yang sangat pendek" menjadi "singkat" dan bukan "kata pendek yang sangat pendek ..." Selain itu, kalian menyarankan menggunakan atribut yang sudah tidak digunakan lagi.
OneWorld

7
Berfungsi bagus, namun singleLine sudah usang sehingga Anda harus menggunakan maxLines = "1" sebagai gantinya. Catatan, ellipsize juga berfungsi dengan banyak garis!
Torre Lasley

4
singleLine sudah tidak digunakan lagi. Gunakan maxLines = "1". hanya komentar untuk jawaban lama
Ewoks

1
MaxLine = 1 akan memotong tampilan teks di tengah. SingleLine = True berfungsi seperti yang diharapkan.
Snake

33

Menemukan pekerjaan yang menarik untuk masalah ini.

maxLines=1
ellipsize=end
scrollHorizontally=true

Caranya adalah pernyataan terakhir tentang pengguliran horizontal .... Setidaknya itu berfungsi pada v2.2.


Menarik ... senang diketahui. Terima kasih Marco atas bantuannya.
BonanzaDriver

4

Secara pemrograman, Anda dapat menggunakan:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
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.