Android: TextView tự động cắt bớt và thay thế 3 char cuối của Chuỗi


131

Nếu a Stringdài hơn TextViewchiều rộng của nó, nó sẽ tự động quấn vào dòng tiếp theo. Tôi có thể tránh điều này bằng cách sử dụng android:singleLine(không dùng nữa) hoặc bằng cách cài đặt android:inputType="text". Thứ tôi cần bây giờ là thứ thay thế 3 ký tự cuối cùng của tôi Stringbằng " ... ". Vì tôi không sử dụng phông chữ đơn cách, nên nó sẽ luôn khác nhau tùy thuộc vào các chữ cái được sử dụng trong tôi String. Vì vậy, tôi tự hỏi cách tốt nhất để có được 3 ký tự cuối cùng của Chuỗi TextViewvà thay thế chúng. Có lẽ đã có một cái gì đó được triển khai trong khung Android, vì đây phải là một vấn đề phổ biến.

Câu trả lời:


290

Bạn sẽ có thể sử dụng thuộc tính "ellipsize" của chế độ xem văn bản:

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

Bạn cũng có thể cần phải áp dụng các giá trị trọng lực cho bố cục quá; Đôi khi tôi đã thấy các chế độ xem "tự động kéo dài" mà không có chúng.


Hoàn hảo. Cảm ơn. Tôi đã thử điều đó trước đây, nhưng không hoạt động, vì tôi đã sử dụng android: inputType = "text" thay vì android: singleLine = "true" (được cho là không dùng nữa). Nhưng bây giờ tôi sẽ gắn bó với Android: singleLine = "true". Rất nhiều ân sủng.
znq

44
Nó vẫn không thêm "...". Đối với tôi, câu hỏi này không được trả lời đầy đủ! Câu trả lời này sẽ biến "short Verywordword" thành "short" chứ không phải "short Verylon ..." Trên hết, các bạn đề nghị sử dụng một thuộc tính không dùng nữa.
OneWorld

7
Hoạt động rất tốt, tuy nhiên SingleLine không được dùng nữa nên bạn phải sử dụng maxLines = "1" thay thế. Lưu ý bên, ellipsize hoạt động với nhiều dòng là tốt!
Torre Lasley

4
SingleLine không được dùng nữa. Sử dụng maxLines = "1". chỉ là một nhận xét cho câu trả lời cũ
Ewoks

1
MaxLine = 1 sẽ cắt bớt textview ở giữa. SingleLine = True hoạt động như mong đợi.
Rắn

33

Tìm thấy một công việc thú vị cho vấn đề này.

maxLines=1
ellipsize=end
scrollHorizontally=true

Bí quyết là tuyên bố cuối cùng về cuộn ngang .... kiểm tra xem nó ra. Nó ít nhất hoạt động trên v2.2.


Thú vị ... tốt để biết. Cảm ơn Marco vì đã ngẩng cao đầu.
BonanzaDriver

4

Lập trình, bạn có thể sử dụng:

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);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.