如何在 Android Material TextInputLayout 中将 SpannableString 设置为 EditText?

问题描述 投票:0回答:1

我找不到一种方法将材质

EditText
中的
TextInputLayout
的文本设置为
SpannableString
并使样式实际显示在屏幕上。我已经尝试了
EditText
TextInputLayout
的所有组合,例如:

  1. AppCompatEditText
  2. EditText
  3. TextInputEditText

用各种方式创建

SpannableString
,例如:

  1. HtmlCompat.fromHtml(string, HtmlCompat.FROM_HTML_MODE_COMPACT)
  2. SpannableString(string).setSpan(...)
  3. TextUtils.stringOrSpannedString(string)

通过各种方式设置

EditText
的文本,例如:

  1. edittext.setText(spannedString)
  2. edittext.setText(spannedString, TextView.BufferType.SPANNABLE)
  3. edittext.append(spannedString)

疯狂的是,当 EditText 不在材质中时它们都可以工作

TextInputLayout
,所以这一定是一个问题。更多信息:当您在
SpannableString
上设置提示或占位符文本时,会考虑
TextInputLayout
,而不是其中的
EditText
的文本。我查看了
TextInputLayout
源代码,但没有发现任何错误。感谢任何可以提供帮助的人。

java android kotlin android-edittext material-components-android
1个回答
1
投票

当我准备放弃的时候我想通了。您可以从

Editable
获取
EditText
对象,然后将
Span
应用于它。方法如下:

mEditText.text.setSpan(...)

当您知道去哪里寻找时,会出奇地简单。

© www.soinside.com 2019 - 2024. All rights reserved.