【问题标题】:Android: formatting portion of text doesn't workAndroid:文本的格式化部分不起作用
【发布时间】:2023-03-13 17:55:01
【问题描述】:

在我的 strings.xml 文件中,我定义了以下内容:

<string name="mystring"><b>Bold text</b>Non-bold text</string>

它应该可以工作,因为它被指定为here。但实际上只显示了粗体文本,而其他部分的文本都没有了。

【问题讨论】:

  • 您的 TextView 是否使用 Spannable 存储?
  • 没有。 Spannable 中不需要根据 android 文档进行简单的文本格式设置。

标签: android textview android-textattributes


【解决方案1】:

取自this SO 线程

使用这个

textView.setText(Html.fromHtml(someText));

或者通过这种方式从xml中获取

您可以在 strings.xml 中包含原始 HTML,只要将其包装在中即可

<![CDATA[ ...raw html... ]]>

例子:

<string name="nice_html">
<![CDATA[
<p>This is a html-formatted string with <b>bold</b> and <i>italic</i> text</p>
<p>This is another paragraph of the same string.</p>
]]>
</string>

然后,在您的代码中:

TextView foo = (TextView)findViewById(R.id.foo);
foo.setText(Html.fromHtml(getString(R.string.nice_html)));

您还可以在 CDATA 块内使用反斜杠转义撇号/单引号,这样您就可以使用 &lt;b&gt;can\'t&lt;/b&gt; 之类的东西,而不是无限丑陋的 &lt;b&gt;can&amp;apos;t&lt;/b&gt;

【讨论】:

  • 但是如果我需要使用 strings.xml 进行不同的本地化呢?
  • 谢谢,它有效。最后一个问题 - 我可以以某种方式在 layout.xml 文件中设置 html 文本,还是仅在代码中设置?
  • 我认为你不能,如果你在你的 android:text 属性中设置你的 html 文本,你也会打印你的 html 标签,诀窍是使用 Html 类,然后使用 Html 中的方法所有这些都用代码!
猜你喜欢
  • 2016-02-28
  • 1970-01-01
  • 2022-10-21
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
相关资源
最近更新 更多