我找不到一种方法将材质
EditText
中的 TextInputLayout
的文本设置为 SpannableString
并使样式实际显示在屏幕上。我已经尝试了 EditText
中 TextInputLayout
的所有组合,例如:
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 不在材质中时它们都可以工作
TextInputLayout
,所以这一定是一个问题。更多信息:当您在 SpannableString
上设置提示或占位符文本时,会考虑 TextInputLayout
,而不是其中的 EditText
的文本。我查看了TextInputLayout
源代码,但没有发现任何错误。感谢任何可以提供帮助的人。
当我准备放弃的时候我想通了。您可以从
Editable
获取 EditText
对象,然后将 Span
应用于它。方法如下:
mEditText.text.setSpan(...)
当您知道去哪里寻找时,会出奇地简单。