2011-01-13 36 views
24

Tôi có một TextView với android: autoLink = "email".TextView để gửi email khi được nhấp

Nếu tôi đặt địa chỉ email của mình vào đó thì một liên kết xuất hiện mà tôi có thể nhấp vào.

Làm cách nào để văn bản khác xuất hiện (ví dụ: 'Gửi phản hồi') thay vì địa chỉ email nhưng vẫn hoạt động giống như khi được nhấp?

Cảm ơn

Trả lời

49

Để đạt được những gì tôi muốn đòi hỏi một cách tiếp cận khác nhau:

TextView feedback = (TextView) findViewById(R.id.TextViewSendFeedback); 
feedback.setText(Html.fromHtml("<a href=\"mailto:[email protected]\">Send Feedback</a>")); 
feedback.setMovementMethod(LinkMovementMethod.getInstance()); 

này về cơ bản đặt HTML trong TextView vì vậy tôi có được một liên kết nói 'Gửi phản hồi' nhưng vào nó để mở ứng dụng email mặc định.

Cảnh báo: Việc thử điều này trong trình mô phỏng ban đầu không hoạt động đối với tôi, nói rằng nó không được hỗ trợ. Điều này chỉ vì tôi không có thiết lập tài khoản email. Thiết lập trên trong giả lập thực hiện công việc như tôi muốn.

+1

Một điều cần lưu ý là, điều này sẽ không hoạt động nếu bạn đặt android: autoLink thành "all". Nó có thể không hoạt động nếu bạn thiết lập android: autoLink cho bất cứ điều gì ngoại trừ "không", nhưng tôi đã không thử nghiệm đó. –

+2

Nếu bạn lưu chuỗi trong tài nguyên chuỗi, bạn cần phải thay thế khung góc trái bằng < – ErikAndren

1

Có thể dễ dàng hơn để tạo nút và bên trong onClickListener() của bạn kéo email từ có thể R.string.email.

+0

Đó là một gợi ý rất hay mà tôi chưa từng nghĩ đến! Tôi thực sự có thể sử dụng nó, mặc dù tôi đã tìm ra giải pháp. Cảm ơn! – neildeadman

28

Một cách đơn giản trong cách bố trí:

... 
<TextView 
     android:id="@+id/tvTelefone" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/sobre_telefone" 
     android:textColor="#000000" 
     android:autoLink="phone" /> 
...  

... 
<string name="sobre_telefone">Contato: (45) 9145-0000</string> 
} 

đọc thêm ở đây: http://developer.android.com/reference/android/widget/TextView.html#attr_android:autoLink

+2

Đây là giải pháp tốt nhất nếu bạn chỉ cần hỗ trợ cơ bản cho liên kết trang web và địa chỉ email. Đối với những người nhầm lẫn với câu trả lời, chỉ cần kiểm tra liên kết thuộc tính 'autoLink' được cung cấp. – cprcrack

+0

autoLink = "email" làm việc cho tôi .. câu trả lời tuyệt vời –

25

Bạn có thể sử dụng cả hai liên kết và email nếu bạn thiết lập các param sau trong TextView

android:autoLink="web|email" 

sự liên kết sẽ được mở trong trình duyệt và các thư sẽ được gửi bởi ứng dụng thư mặc định

+0

điều này không hoạt động trên mặt của tôi –

0

Fro the Strings From strings.xml:

<string name="your_string"><![CDATA[ contact us at <a href=\"mailto:[email protected]\">[email protected]</a> for more help.]]></string> 


tvObject.setText(Html.fromHtml(getString(R.string.your_string))); 
tvObject.setMovementMethod(LinkMovementMethod.getInstance());