使用RelativeSizeSpan与TextView的textAllCaps为true无效

时间:2017-09-19 09:18:01

标签: android spannable

所有标题。

这是一个错误还是一个想要的行为? 在最后一种情况下,我无法理解为什么?

1 个答案:

答案 0 :(得分:3)

可能是错误或互斥。

设置textAllCaps后,TextView会应用TransformationMethod获取文本并将其转换为纯文本Strings,这会使源文本CharSequence失去所有其他样式,跨越。

你可以像(Kotlin天真)那样以编程方式欺骗它:

 val text = textView.text // at this point allCaps is applied so text is caps
 textView.setAllCaps(false) // remove the allCaps
 val spannable = SpannableString(text) // create new spannable with allCapped text 
 spannable.setSpan(RelativeSizeSpan(1f), 0, text.length, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE)
 textView.text = spannable //set it.

另一种方法是创建自己的TransformationMethod,它将为您设置的每个文本应用Span。