【问题标题】:Why HtmlCompat.fromHtml() is not styling the text?为什么 HtmlCompat.fromHtml() 没有设置文本样式?
【发布时间】:2020-07-02 06:51:27
【问题描述】:

我正在尝试在将String 的一部分设置为TextView 之前对其进行样式设置。但是当我运行应用程序时,文本没有应用任何样式。

我已经将strings.xml中的字符串资源定义为

<string name="amount_added_notice"> <![CDATA[Amount of <b><font color=\'#333333\'>\u20B9%1$s</font></b> added to %2$s Account]]> </string>

XML中,我使用DataBinding来设置文字

android:text="@{viewModel.firstText}"

firstText 变量在ViewModel 中定义为

val firstText by lazy { ObservableField<String>() }

然后string分配如下,

firstText.set(  HtmlCompat.fromHtml(context.getString(R.string.amount_added_notice, "500", "John's"), FROM_HTML_MODE_LEGACY)))

我做错了什么?

【问题讨论】:

  • 你可以编辑你的问题和分享,你如何为TextView设置Text
  • 将html字符串直接粘贴到fromHtml而不是使用context.getString,这将证明问题是fromHtml还是context.getString(我觉得你的问题是转义XML 文件中的 HTML)。
  • 我已经添加了 XML 文件。

标签: android xml string kotlin


【解决方案1】:
val firstText by lazy { ObservableField<String>() }

尝试将其更改为:

val firstText by lazy { ObservableField<CharSequence>() }

看看是否有帮助。 HtmlCompat.fromHtml() 的输出是一个CharSequence,特别是某种包含格式化规则的Spannable。我的猜测是正在向下转换为普通的String

【讨论】:

  • 是的,确实将其更改为 CharSequence 有效。
【解决方案2】:

尝试删除十六进制颜色周围的单引号和反斜杠。 就这样

<font color=#333333>

【讨论】:

  • 我肯定会尝试,但是文本不是粗体怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
  • 2019-01-13
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 2015-01-04
  • 2012-05-23
相关资源
最近更新 更多