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

发布于 2024-11-02 21:01:47 字数 701 浏览 2 评论 0原文

我正在尝试在“关于”框中添加指向 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>

它在“关于”框中呈现 html 标记。

我也尝试过:

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

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

我该如何完成这个看似简单的任务!?

干杯, 巴里

I'm trying to add a link to a Twitter profile in an about box. 'Regular' links such as email address and web address are handled by

android:autoLink="email|web"

in about.xml, but for a Twitter profile page I need to use html code in my strings.xml. I've tried:

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

which renders html markup on the about box.

I've also tried:

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

which display the text "Follow us on Twitter: @mytwitterprofile", but it is not a hyper-link.

How do I do this seemingly simple task!?

Cheers,
Barry

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清醇 2024-11-09 21:01:47

问题是您的“a href”链接标签位于 strings.xml 中,并在解析 strings.xml 时被解析为标签,这是您不希望的。这意味着您需要让它忽略使用 XML 的 CDATA 的标签:

示例文本 link1< /a>]]>

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

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

The problem is your "a href" link tags are within strings.xml and being parsed as tags when strings.xml is parsed, which you don't want. Meaning you need to have it ignore the tags using XML's CDATA:

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

And then you can continue with Html.fromHtml() and make it clickable with LinkMovementMethod:

TextView tv = (TextView) findViewById(R.id.textHolder);
tv.setText(Html.fromHtml(getString(R.string.sampleText)));
tv.setMovementMethod(LinkMovementMethod.getInstance());
诗酒趁年少 2024-11-09 21:01:47

简单的答案是 TextView 不支持 标签。 AFAIK,它仅支持基本格式,例如 。但是,如果您提供 android:autoLink="web",则以下字符串:

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

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

The simple answer is that the TextView does not support <a> tags. AFAIK, it only supports basic formatting such as <b>, <i> and <u>. However, if you supply android:autoLink="web", the following string:

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

Will turn twitter.com/mytwitterprofile into a proper link (when set via XML like android:text="@string/twitter"; if you want to set it from code, you'll need the Html.fromHtml method someone else posted in an answer).

瑾兮 2024-11-09 21:01:47

我不太确定如何使用“字符串”进行链接,但您可以使用 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());

I'm not too sure how to link using 'strings', but you could set text of the EditText or TextView using fromHtml...

TextView text = (TextView) findViewById(R.id.text);
text.setText(Html.fromHtml("<a href=\"http://www.google.com\">Google Link!</a>"));
text.setMovementMethod(LinkMovementMethod.getInstance());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文