2012-02-09 27 views
21

Tôi thường thiết lập một số loại AlertDialog để kích hoạt khi người dùng sử dụng một trong các ứng dụng của tôi trước tiên và tôi giải thích cách sử dụng ứng dụng với những gì họ vừa tải xuống. Tôi cũng thường tải chuỗi của tôi từ tệp strings.xml.Android-Có thể thêm liên kết có thể nhấp vào tài nguyên chuỗi

Điều tôi muốn làm là làm cho một trong các từ trong tài nguyên chuỗi của tôi có thể nhấp như một siêu liên kết trên trang web. Về cơ bản bạn sẽ có một AlertDialog và trong tài nguyên chuỗi sẽ có một từ được đánh dấu hoặc có thể chỉ là một địa chỉ web mà họ có thể nhấn. Tôi cho rằng tôi chỉ có thể thêm một nút mà sẽ đưa họ đến trang web nhưng tôi chỉ muốn biết nếu thực hiện một từ trong tài nguyên chuỗi của bạn một siêu liên kết có thể nhấp có thể.

Trả lời

43

Chỉ cần sử dụng một liên kết định dạng HTML trong tài nguyên của bạn:

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

Sau đó bạn có thể sử dụng setMovementMethod(LinkMovementMethod.getInstance()) trên TextView của bạn để làm cho nhấp được liên kết.

Cũng có thuộc tính's android:autoLink cũng nên hoạt động.

+1

Awesome :) Hãy thử thiết lập này và đăng lại khi tôi nhận được nó để làm việc :) –

+4

android: autoLink = "web" hoạt động hoàn hảo cho tôi. – Rajkiran

+1

Tôi thấy rằng mọi thứ trong chuỗi * sau * liên kết không hiển thị (vì vậy ' Hiển thị và so does this nhưng điều này không có nghĩa là'). Làm thế nào để bạn làm điều này? –

5

Android không làm cho các chuỗi có chứa liên kết hợp lệ có thể nhấp tự động. Những gì bạn có thể làm, là thêm chế độ xem tùy chỉnh vào hộp thoại của bạn và sử dụng WebView để hiển thị thông báo cảnh báo. Trong trường hợp đó, bạn có thể lưu trữ html trong tài nguyên của mình và chúng sẽ có thể nhấp được.

View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null); 

WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView); 
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8"); 
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
builder.setView(alertDialogView); 

alert_dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" android:layout_height="wrap_content" 
android:orientation="vertical"> 
<WebView android:id="@+id/dialogWebView" android:layout_height="wrap_content" 
    android:layout_width="wrap_content" /> 
+0

Hey cảm ơn cho info :) Tôi thậm chí không nghĩ đến việc sử dụng một webview thats khá mát mẻ. –

+2

Sử dụng một WebView cho một điều tầm thường như vậy thực sự là một ý tưởng tồi. –

3

Tôi đã tìm thấy điều gì đó thú vị. Hãy cho tôi biết nếu có ai trong số các bạn quan sát điều này.

Dưới siêu liên kết không được làm việc nếu bạn sử dụng

android:autoLink="web" 

nhưng làm việc với

TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     Click me! 
    </a> 
</string> 

nhưng nếu bạn sử dụng liên kết sau đây nó hoạt động với cả hai

android:autoLink="web" (or) 
TextView link = (TextView) findViewById(R.id.link); 
link.setMovementMethod(LinkMovementMethod.getInstance()); 

<string name="my_link"> 
    <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
     http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource 
</string> 
    </a> 
Các vấn đề liên quan