【问题标题】:How to make a link INSIDE a string resource (along with other text in it) ? - Android如何在字符串资源中创建链接(以及其中的其他文本)? - 安卓
【发布时间】:2013-10-19 03:11:38
【问题描述】:

例如:看看下面的字符串资源:

 <string name="b1b">This link will take you to google.com. More text here.</string>

现在我希望这个字符串资源在我的应用中看起来像这样:

此链接会将您带到Google。更多文字在这里。

我不能使用三个文本视图。这只是一个例子。所以我不能把整个 textview 变成一个链接。

(为什么? 我在我的应用程序中所做的是……我说了十几个按钮,每个按钮都发送一个字符串资源 ID 作为“文本淋浴活动”的意图……而且我只有一个文本视图,它显示不同的基于文本的文本用户点击了哪个按钮。所以,我正在节省应用程序的大小。

此外,每个这样的文本字符串资源在不同的地方都有不同数量的链接,因此仅针对链接使用单个文本视图并以某种方式将其编织在两者之间是不可行的。)

所以,我需要将一点点的字符串资源做成一个链接。我试过&lt;a&gt; 没有效果。

如何做到这一点?

【问题讨论】:

  • 您想要“此链接将带您到 google.com。”让它成为一个链接?
  • 我只想要 { "TEXT HERE" + LINK + "TEXT HERE" } ...在单个文本视图中。 {...} 是单一资源

标签: android url text hyperlink


【解决方案1】:

示例 XML 资源:

</string name="mlink">
    to go to Google<![CDATA[ <a href="http://google.com">click here</a>]]> 
    and <![CDATA[<a href="http://yahoo.com">this</a>]]> moves you to yahoo!
</string>

Java:

yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
yourTextView.setText(Html.fromHtml(getString(R.string.mlink)));

请注意,您需要将 html 链接放在 CDATA 标记内,这是在字符串资源中使用链接的正确方法。

【讨论】:

  • 你好!这很好用,但是......它把我的格式扔进了垃圾桶......首先,它现在忽略了所有换行符转义符......但是链接有效......如何恢复格式?
  • 我没试过,但是你应该看看stackoverflow.com/questions/9121799/…和类似的问题
  • @Droidman 根据此链接developer.android.com/guide/topics/resources/… 应将 应该只用于 CDATA 打开”
  • @Nainal 如果您的 HTML 在 CDATA 块中,则无需替换任何内容
【解决方案2】:

如果有人想在没有 CDATA 的情况下使用 @Droidman 的答案,下面也可以在没有 CDATA 的情况下使用,但我们必须使用 < 转义诸如 "

</string name="mlink">
to go to Google &lt;a href=\"http://google.com\"&gt;click here&lt;/a&gt; 
and &lt;a href=\"http://yahoo.com\"&gt;this&lt;/a&gt; moves you to yahoo!
</string>

Java:

yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
yourTextView.setText(Html.fromHtml(getString(R.string.mlink)));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    相关资源
    最近更新 更多