【发布时间】:2012-04-20 12:35:53
【问题描述】:
如何为 textview 的某些部分提供自动链接?例如:我在 TextView 中的文字是“请点击此处打开此网页”。我只想显示“此处”文本的链接。我应该在点击文本“here”时打开该网页,而不是在 TextView 的任何地方。
【问题讨论】:
如何为 textview 的某些部分提供自动链接?例如:我在 TextView 中的文字是“请点击此处打开此网页”。我只想显示“此处”文本的链接。我应该在点击文本“here”时打开该网页,而不是在 TextView 的任何地方。
【问题讨论】:
在 string.xml 中放入一个字符串
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="txtCredits">Support: <a href="http://www.stackoverflow.com">click here</a></string>
</resources>
你可以像这样在 textView 中使用它:
<TextView
android:layout_width="fill_parent"
android:id="@+id/text"
android:layout_height="wrap_content"
android:gravity="center"
android:linksClickable="true"
android:text="@string/txtCredits" />
编辑
由于某种原因,上面的代码不能正常工作。所以,也添加下面的代码,
TextView t2 = (TextView) findViewById(R.id.text);
t2.setMovementMethod(LinkMovementMethod.getInstance());
重要提示:如果您拨打setMovementMethod(),请不要忘记删除autoLink="web"。
【讨论】:
Textviews 能够显示 HTML,这可以解决您的问题。用超链接包裹你想要点击的内容:
String html = "My link is <a href=\"http://google.com\">here</a>";
myTextView.setText(Html.fromHtml(html));
【讨论】:
Linkify,ClickableSpan,android:autoLink。选择你最喜欢的,但不要像这样使用 HTML。
linksClickable="true" 和 autoLink="true" 也无效。似乎这样做的唯一方法是:stackoverflow.com/a/2746708/708906
在strings.xml中使用简单的Url:
<string name="autolink_val">Please Click Here : http://www.google.com</string>
在 Java 代码中这样写:
<TextView android:id="@+id/linkVal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:text="@string/autolink_val1"/>`
【讨论】:
android:autoLink="web" 不允许显示"here" 的链接;它只允许 url 本身充当链接,如:http://www.example.com/。
在strings.xml中使用HTML语法:
<string name="test">Click <a href="http://vtuhtan.info">here</a></string>
将 TextView 属性设置为具有可点击链接和自动链接。
TextView tv = findViewById(R.id.textView);
tv.setText(Html.fromHtml(getResources().getString(R.string.test)));
【讨论】:
您可以使用以下代码对其进行测试:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="http://www.yahoo.com"
android:autoLink="web"
/>
【讨论】: