无法让HREF在Android strings.xml中工作

时间:2011-04-22 12:46:29

标签: android href

我正在尝试在about框中添加指向Twitter个人资料的链接。 <常规'链接(如电子邮件地址和网址)由

处理
android:autoLink="email|web"

在about.xml中,但对于Twitter个人资料页面,我需要在strings.xml中使用html代码。我试过了:

<string name="twitter">Follow us on &lt;a href=\"http://www.twitter.com/mytwitterprofile"&gt;Twitter: @mytwitterprofile&lt;/a&gt;</string>

在about框上呈现html标记。

我也试过了:

<string name="twitter">Follow us on <a href="http://www.twitter.com/mytwitterprofile">Twitter: @mytwitterprofile</a></string>

显示文本“在Twitter上关注我们:@mytwitterprofile”,但它不是超链接。

我如何做这个看似简单的任务!?

干杯, 百里

3 个答案:

答案 0 :(得分:10)

问题是你的“a href”链接标记在strings.xml中,并在解析strings.xml时被解析为标记,这是你不想要的。这意味着您需要使用XML的CDATA忽略标记:

<string name="sampleText">Sample text <![CDATA[<a href="www.google.com">link1</a>]]></string>

然后,您可以继续Html.fromHtml()并使用LinkMovementMethod点击它:

TextView tv = (TextView) findViewById(R.id.textHolder);
tv.setText(Html.fromHtml(getString(R.string.sampleText)));
tv.setMovementMethod(LinkMovementMethod.getInstance());

答案 1 :(得分:5)

简单的答案是TextView不支持<a>标记。 AFAIK,它仅支持基本格式,例如<b><i><u>。但是,如果您提供android:autoLink="web",则使用以下字符串:

<string name="twitter">Follow us at twitter.com/mytwitterprofile</string>

twitter.com/mytwitterprofile转换为正确的链接(通过像android:text="@string/twitter"这样的XML设置;如果要从代码设置它,则需要其他人发布的Html.fromHtml方法答案)。

答案 2 :(得分:2)

我不太确定如何使用'strings'进行链接,但您可以使用fromHtml设置EditText或TextView的文本...

TextView text = (TextView) findViewById(R.id.text);
text.setText(Html.fromHtml("<a href=\"http://www.google.com\">Google Link!</a>"));
text.setMovementMethod(LinkMovementMethod.getInstance());