2015-11-23 14 views
7

Màn hình trong ứng dụng của tôi có khả năng sẽ gửi các chuỗi dài thực sự vào một số TextView. Đối với kịch bản này, tôi có android:ellipsize="marquee" được đặt để văn bản sẽ chạy qua TextView.Cài đặt textIsSelectable trên TextView với marquee ellipsize thêm hình elip

Tuy nhiên, tôi đã quyết định tôi cũng muốn văn bản này có thể chọn được (android:textIsSelectable="true"). Trong hầu hết các trường hợp, điều này không có vấn đề gì. Văn bản nhỏ hơn TextView và người dùng chỉ có thể chọn nó. Tuy nhiên, nếu tôi có thuộc tính textIsSelectable và nếu văn bản lớn hơn TextView, văn bản sẽ chọn một hình elip thay vì là chuỗi đầy đủ. Nó vẫn sẽ chuyển vùng, nhưng nó không còn hiển thị toàn văn. Nó cắt nó ra và hiển thị một hình elip.

<TextView 
     android:layout_width="wrap_content" 
     android:layout_height="?android:attr/listPreferredItemHeightSmall" 
     android:ellipsize="marquee" 
     android:focusable="true" 
     android:gravity="center_vertical" 
     android:singleLine="true" 
     android:textIsSelectable="true"> 

Có cách nào để văn bản có thể chọn và vẫn duy trì toàn bộ chuỗi trong vùng chọn (không có hình elip) không?

+0

Chính xác bạn muốn gì? –

+1

Bạn muốn chọn văn bản và cũng có thể di chuyển văn bản trong chế độ xem văn bản/ –

+0

Có. Đó là thứ mà tôi muốn. – Andrew

Trả lời

1

Không thể chắc chắn nếu đây là lỗi.

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="?android:attr/listPreferredItemHeightSmall" 
    android:ellipsize="start" 
    android:focusable="true" 
    android:gravity="center_vertical" 
    android:singleLine="true" 
    android:textIsSelectable="true"/> 

Lưu ý rằng chúng tôi đang thiết lập android:ellipsize="start" trong xml - thêm về điều này sau.

mTextView = (TextView) findViewById(R.id.tv); 
mTextView.post(new Runnable() { 
    @Override 
    public void run() { 
     mTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE); 
     mTextView.setSelected(true); 
    } 
}); 

setEllipsize(TruncateAt) kiểm tra xem giá trị hiện tại ellipsize là giống như một cung cấp. Để giải quyết vấn đề này, chúng tôi cung cấp android:ellipsize="start" bằng xml. Bằng cách này, TextView không gặp sự cố khi chấp nhận TextUtils.TruncateAt.MARQUEE sau này.

Bây giờ, mặc dù công việc này, tôi sẽ đề nghị bạn không làm điều này. Bạn sẽ có thể thấy lý do tại sao - khi bạn thử mã này. Có vẻ như textIsSelectablekhông được sử dụng với marquee - các chốt xử lý lựa chọn không di chuyển cùng với văn bản.

Tất cả trong tất cả, có vẻ rất sơ sài.

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