2010-04-18 2 views
5

Tôi có một TextView với MovementMethod được đặt thành LinkMovementMethod. Văn bản được thêm vào số TextView là sự kết hợp giữa văn bản và URL thông thường. Đối với URL, tôi muốn cung cấp menu ngữ cảnh khi URL được nhấn lâu để thực hiện những việc như sao chép địa chỉ. Tôi đã có một cái nhìn tại nguồn cho LinkMovementMethod nhưng nó dường như không có bất kỳ mã liên quan lâu dài tôi có thể ghi đè lên. Bất kỳ ý tưởng về cách để đi xung quanh đạt được điều này?Hiển thị menu ngữ cảnh khi liên kết được nhấn lâu trong TextView

+0

Bạn cũng có thể xem câu hỏi này để [triển khai sao chép trong menu ngữ cảnh] (http://stackoverflow.com/questions/2226836/how-can-i-write-my-own-context -menu-cho-copy-paste). Nó không có câu trả lời atm, nhưng tôi đang làm việc để tìm một số – Casebash

Trả lời

13

Bạn chỉ có thể sử dụng registerForContextMenu ví dụ:

TextView tv = new TextView(this); 
    registerForContextMenu(tv); 

và sau đó ghi đè lên onCreateContextMenu để tạo ra một menu

@Override 
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 
super.onCreateContextMenu(menu, v, menuInfo); 
      // Create your context menu here 
    menu.setHeaderTitle("Context Menu"); 
    menu.add(0, v.getId(), 0, "Action 1");   
} 

nơi bạn có thể sử dụng ID của chế độ xem để truyền lại cho các sự kiện xảy ra khi nhấn vào một mục menu để phân biệt chế độ xem nào được gọi là sự kiện.

@Override 
public boolean onContextItemSelected(MenuItem item) { 
    // Call your function to preform for buttons pressed in a context menu 
    // can use item.getTitle() or similar to find out button pressed 
    // item.getItemID() will return the v.getID() that we passed before 

} 
+0

Tôi muốn chỉ hiển thị menu ngữ cảnh khi URL được nhấn lâu để tôi có thể cung cấp một số tùy chọn cụ thể cho liên kết đó như 'Sao chép' và ' Chia sẻ ' –

+1

@Al: Nếu bạn đăng ký menu ngữ cảnh, nó chỉ xuất hiện trên báo chí dài – Casebash