android - 将RelativeSizeSpan 与TextView 的textAllCaps 一起使用为true 不起作用

标签 android spannable

一切都在标题中。

这是一个错误还是一个期望的行为? 在最后一种情况下,我不明白为什么?

最佳答案

可能是错误或互斥。

textAllCaps设置时,TextView应用TransformationMethod来获取文本并将其转换为纯Strings,这使得源文本 CharSequence 释放了所有其他样式和跨度。

你可以像(Kotlin naive)一样以编程方式欺骗它:

 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 应用于设置的每个文本。

关于android - 将RelativeSizeSpan 与TextView 的textAllCaps 一起使用为true 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46296488/

相关文章:

Android - 使用通过请求发送的预定输入浏览 USSD 菜单

java - 用户登录后,我应该使用类实例(序列化)还是单例来存储 userInfo

java - 在循环中对可变文本使用 spannable

android - 如何使用支持库字体功能作为 TextView 内容的一部分(使用 spannable)?

java - 动态地将 ListView 上的文本加粗到指定单词

android - 使用 android.content.Intent.ACTION_SENDTO 启动 whatsapp

android - 如何使按钮在视频 View 中可见 "OnPreparedListener"方法

android - 如何在像素级操作图像并从图像中提取信息?

android - 带有 Spannable 的按钮 setText 不适用于 Android 5.0 Lollipop

android - 使用 Spannable 和 LinkMovementMethod 选择 TextView