2012-04-02 11 views
5

Tôi muốn thực hiện một số bộ phận của văn bản riêng nhấp được ví dụ như trong các văn bản dưới đây:Android Clickable TextView Làm thế nào để Thực hiện nhiều Regions nhấp vào văn bản Và Catch Region Selection

Get thời tiết DỰ BÁO một ngày, hai ngày, bảy ngày.

Tôi muốn có thể nhấp riêng lẻ ba vùng khác nhau của văn bản để nhận một ngày, hai ngày hoặc bảy ngày. Tôi không muốn điều này để goto một URL trang web, nhưng chỉ cần bắt các nhấp chuột vào vùng văn bản bên trong hoạt động đó là hiển thị TextView.

+0

thể trùng lặp của (http://stackoverflow.com/questions/9584136/how-to-click-or-tap-on -a-textview-text-on-other-words) – ForceMagic

Trả lời

12

Bạn sẽ có thể thực hiện điều đó bằng cách sử dụng ClickableSpan. Về cơ bản, bạn cần phải tạo một SpannableStringBuilder, nối thêm các phần văn bản và đặt một ClickableSpan khác cho mỗi phần văn bản có thể nhấp.

SpannableStringBuilder sb = new SpannableStringBuilder(); 
String regularText = "This text is "; 
String clickableText = "clickable"; 
sb.append(regularText); 
sb.append(clickableText); 
sb.setSpan(new ClickableSpan(), sb.length()-clickableText.length(), sb.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
TextView tv = ... 
tv.setText(sb); 

Đây chỉ là ví dụ minh họa cách đặt một ClickableSpan. Rõ ràng nó sẽ có ý nghĩa hơn để làm ở trên trong một vòng lặp và thiết lập một khoảng mới với mỗi lần lặp.

Tuy nhiên, vì ClickableSpan là một lớp trừu tượng, trước tiên bạn sẽ cần phải mở rộng nó với triển khai cụ thể của riêng bạn. Cụ thể hơn, phương thức onClick sẽ cần được triển khai để xử lý các sự kiện nhấp chuột.

Ngoài ra, đừng quên đặt MovementMethod thành TextView, ví dụ: LinkMovementMethod: [? Làm thế nào để nhấp chuột hoặc gõ vào một văn bản TextView chữ khác nhau]

tv.setMovementMethod(LinkMovementMethod.getInstance()); 
Các vấn đề liên quan