2011-06-28 48 views
5

Tôi đã tự hỏi nếu có một cách để thay thế ba ký tự cuối cùng của một TextView bằng '...' nhưng chỉ khi văn bản hiện tại tràn qua TextView. Tôi phải giới hạn TextView thành 1 dòng nhưng đôi khi văn bản quá dài và tôi muốn hiển thị '...' ở cuối để cho biết văn bản dài hơn những gì đang hiển thị.Chỉ báo tràn văn bản Android TextView?

Cảm ơn

Trả lời

16

Có. Bạn có thể sử dụng http://developer.android.com/reference/android/widget/TextView.html#attr_android:ellipsize để định cấu hình hiển thị "...".

+0

wow, tôi không biết về điều này. tuyệt vời! –

+0

Điều này không chỉ đảm bảo rằng từ bị cắt không bị cắt ở giữa? Làm thế nào tôi sẽ làm cho nó thay thế ba ký tự cuối cùng bằng '...'? – Bryan

+1

Nếu bạn đặt các đường tối đa thành 1 và đặt tùy chọn này thành tùy chọn END, tôi tin rằng bạn sẽ có những gì bạn đang tìm kiếm. Các hoạt động thay thế sẽ rất cồng kềnh và dựa trên chiều rộng/chiều cao của phông chữ và số lượng ký tự, về cơ bản buộc bạn phải xác định độ dài của văn bản được đặt ra và sau đó tính toán cắt bỏ. Tôi thực sự nghĩ rằng bạn nên cố gắng để chơi xung quanh với tùy chọn này và bố trí trọng lực để xem nếu bạn có thể tìm thấy một giải pháp khả thi trước khi bạn đi xuống mà lỗ thỏ. –

0

Có, đây là một nhiệm vụ phổ biến được gọi là cắt xén. Bạn sẽ cần phải tìm ra ký tự tối đa mà bạn nghĩ sẽ phù hợp (-3 cho 3 giai đoạn) và sau đó làm một cái gì đó như thế này:

int MAX_CHARS = 55; // for example 
TextView tv = (TextView) findViewById(R.id.your_text_view_id); 
if(tv.getText().toString().length >= MAX_CHARS){ 
    tv.setText(tv.getText().toString().substring(0,MAX_CHARS) + "..."); 
} 

Ghi một số nhân vật rộng hơn những người khác, tùy thuộc vào phông chữ, vì vậy có lẽ bạn muốn thử tất cả các chữ hoa khi cố gắng tìm ra MAX_CHARS của bạn. (thường là một trong những nhân vật rộng hơn trong kinh nghiệm của tôi)

+0

Tôi sẽ cố gắng @ nick-campion 's cách đầu tiên, sau đó nếu nó không làm việc cho bạn, bạn có thể làm một cái gì đó như ở trên. –

+0

android: ellipsize = "end" sẽ làm điều đó cho bạn. –

+0

@ romain-guy bạn nên chuẩn bị cho buổi họp mặt của bạn tối nay và không downvoting tôi;) –

Các vấn đề liên quan