当用户第一次使用我的应用程序时,我通常会设置某种AlertDialog
来解雇,我会解释如何使用该应用程序,并对他们刚刚下载的内容进行全面介绍。我通常也会从strings.xml
文件加载我的字符串。
我想要做的是让我的字符串资源中的一个单词可以点击,就像网页上的超链接一样。基本上你有一个AlertDialog
,在字符串资源中会有一个突出显示的单词,或者可能只是一个他们可以按的网址。我想我可以添加一个将它们带到网站的按钮,但我只是想知道在你的字符串资源中是否可以使用可点击的超链接。
答案 0 :(得分:55)
只需在资源中使用HTML格式链接:
<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>
然后,您可以使用setMovementMethod(LinkMovementMethod.getInstance())
上的TextView
来点击链接。
还有TextView
的{{1}}属性也可以使用。
答案 1 :(得分:10)
我发现了一些有趣的东西。如果你们中有人发现这一点,请告诉我。
如果您使用
,则超链接无效android:autoLink="web"
但可以使用
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>
但如果您使用以下链接,则可以同时使用
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>
答案 2 :(得分:4)
Android不会自动生成包含有效链接的字符串。您可以做的是将自定义视图添加到对话框并使用WebView显示警报消息。在这种情况下,您可以在您的资源中存储html,它们将是可点击的。
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" />
答案 3 :(得分:2)
正如@Nikolay Elenkov回答的那样,在Kotlin中,我是通过这种方式(对于新生的详细方法)从字符串资源中使用它的:
在我的布局中选中一个复选框:
<CheckBox
android:id="@+id/termsCB"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="@dimen/spacing_normal"
android:layout_marginTop="@dimen/spacing_normal"
android:text="@string/terms_and_conditions" />
在strings.xml中
<string name="terms_and_conditions">I read and accept the <a href="http://www.spiffyshow.com/">Terms and Conditions</a></string>
在我的activity
类中的onCreate()方法中
termsCB.movementMethod = LinkMovementMethod.getInstance()
答案 4 :(得分:0)
对我来说,超链接总是很好用,当我:
textView.setMovementMethod(LinkMovementMethod.getInstance())
textView.setText(Html.fromHtml(getString(R.string.link)))
<string name="link"><![CDATA[<a href="https://google.com">Google link</a>]]></string>