如何在 Android Material TextInputLayout 中将 SpannableString 设置为 EditText?
How to set a SpannableString to an EditText in an Android Material TextInputLayout?
我找不到将 Material TextInputLayout
中的 EditText
的文本设置为 SpannableString
并使样式实际显示在屏幕。我已经尝试了 TextInputLayout
中 EditText
的所有组合,例如:
AppCompatEditText
EditText
TextInputEditText
用各种方法创建 SpannableString
,例如:
HtmlCompat.fromHtml(string, HtmlCompat.FROM_HTML_MODE_COMPACT)
SpannableString(string).setSpan(...)
TextUtils.stringOrSpannedString(string)
用各种方法设置EditText
的文本,例如:
edittext.setText(spannedString)
edittext.setText(spannedString, TextView.BufferType.SPANNABLE)
edittext.append(spannedString)
疯狂的是,当 EditText 不在 Material TextInputLayout
内时,它们都可以工作,所以这一定是个问题。更多信息:当您在 TextInputLayout
上设置提示或占位符文本时,SpannableString
会受到尊重,而不是其中 EditText
的文本。我查看了 TextInputLayout
源代码,但没有发现任何错误。感谢任何能提供帮助的人。
在我准备放弃的时候想出来了。您可以从 EditText
获取 Editable
对象,然后将 Span
应用于它。方法如下:
mEditText.text.setSpan(...)
当您知道要查找的位置时,会出乎意料地容易。
我找不到将 Material TextInputLayout
中的 EditText
的文本设置为 SpannableString
并使样式实际显示在屏幕。我已经尝试了 TextInputLayout
中 EditText
的所有组合,例如:
AppCompatEditText
EditText
TextInputEditText
用各种方法创建 SpannableString
,例如:
HtmlCompat.fromHtml(string, HtmlCompat.FROM_HTML_MODE_COMPACT)
SpannableString(string).setSpan(...)
TextUtils.stringOrSpannedString(string)
用各种方法设置EditText
的文本,例如:
edittext.setText(spannedString)
edittext.setText(spannedString, TextView.BufferType.SPANNABLE)
edittext.append(spannedString)
疯狂的是,当 EditText 不在 Material TextInputLayout
内时,它们都可以工作,所以这一定是个问题。更多信息:当您在 TextInputLayout
上设置提示或占位符文本时,SpannableString
会受到尊重,而不是其中 EditText
的文本。我查看了 TextInputLayout
源代码,但没有发现任何错误。感谢任何能提供帮助的人。
在我准备放弃的时候想出来了。您可以从 EditText
获取 Editable
对象,然后将 Span
应用于它。方法如下:
mEditText.text.setSpan(...)
当您知道要查找的位置时,会出乎意料地容易。