【问题标题】:How to make Resources.getStringArray work with HTML markup in Android如何使 Resources.getStringArray 在 Android 中与 HTML 标记一起使用
【发布时间】:2014-01-15 21:16:01
【问题描述】:

我在res/values 中有一个带有字符串数组的 XML 文件,其项目包含简单的 HTML 标记,例如:

<resources>
    <string-array name="frases31">
        <item>They <u>were not</u> before.</item>
        <item>I don\'t think <u>he</u> is.</item>
...

我以这种方式将这些加载到 String[] 数组中:

Resources res = mContext.getResources();
exercise.setSentences(res.getStringArray(R.array.frases31));

问题是变量exercise中的String[]数组,称为sentences只包含字符串,HTML标记(&lt;u&gt;&lt;/u&gt;)已经消失。 我应该将调用res.getStringArray(R.array.frases31) 的结果存储在一个特殊变量中吗? 我有一个索引,我会以编程方式将sentences[i] 放入TextView

【问题讨论】:

  • 由于getStringArray() 返回String[],而不是CharSequence[],我怀疑标记是不允许的。您可以尝试将字符串包装在 CDATA 中,这样标签就可以保留,然后使用 Html.fromHtml() 解析生成的字符串。
  • 它必须工作,根据developer.android.com/guide/topics/resources/…string-array 元素中的 item 子元素是“可以包含样式标签的字符串”。答案有效。

标签: android arrays


【解决方案1】:

您需要编辑 XML 来实现这一点。您可以使用 CDATA 包装您的项目以保留标记:

<item><![CDATA[They <u>were not</u> before.]]></item>
<item><![CDATA[I don\'t think <u>he</u> is.]]></item>

或者单独转义每个标记字符:

<item>They &lt;u&gt;were not&lt;/u&gt; before.</item>
<item>I don\'t think &lt;u&gt;he&lt;/u&gt; is.</item>

【讨论】:

  • 转义每个标记字符都有效,我必须使用Html.fromHtml() 传递带有转义标记字符的字符串。 developer.android.com/guide/topics/resources/… 的文档有点混乱,似乎只有在创建“也用作格式字符串的样式化文本资源”时才需要转义和调用 Html.fromHtml(),实际上在创建时也有必要只是一个样式化的文本资源。
猜你喜欢
  • 2014-04-05
  • 1970-01-01
  • 2020-08-01
  • 2011-02-19
  • 1970-01-01
  • 2016-03-05
  • 1970-01-01
  • 2022-08-22
  • 1970-01-01
相关资源
最近更新 更多