gpt4 book ai didi

Android Spanned、SpannedString、Spannable、SpannableString 和 CharSequence

转载 作者:IT老高 更新时间:2023-10-28 13:09:09 26 4
gpt4 key购买 nike

Android 提供了各种与文本和字符串相关的界面:SpannedSpannedStringSpannableSpannableStringCharSequence

在使用 Html.fromHtml()TextView为了对其应用一些样式。

我试图从 Android 的官方文档中了解这些接口(interface)的用途/用法,但失败了,因为它非常令人困惑..这些接口(interface)的目的是什么?在哪些情况下最常使用它们?在哪些情况下最好避免使用它们?使用其中任何一种时,是否有任何明显的性能影响需要考虑?

如果有人能提供一个体面的解释,将不胜感激。

最佳答案

What is the purpose of these interfaces?

diagram from yuml.me/edit/5f8da6cbCharSequence 是表示字符序列的标准 Java 接口(interface)。 StringCharSequence 最常用的具体实现,其次是 StringBuilder

Spanned 是一个带有“spans”的 CharSequence,表示应用于文本部分的格式,这些跨度不能被修改。

Spannable 是一个 Spanned,增加了修改 span(添加或删除格式)的能力,但 修改文本本身。

SpannedStringSpanned 接口(interface)的具体实现。

SpannableStringSpannable 接口(interface)的具体实现。

in which scenarios is it mostly common to use them?

当存在返回 1 的方法时(例如,EditText 上的 getText())或当存在将 1 作为参数的方法时(例如, setText()TextView 上)。 diagram from yuml.me/edit/35c8f39f

您引用的使用 Html.fromHtml() 的案例可能是传统 Android 开发中最常见的,作为带有 SpannedTextView重量比 WebView 轻得多。但是,还有其他用例,例如:

In which cases is it best to avoid using them?

它们在对抗脱发、除雪、热泵维修、制作蛋奶酥等方面非常糟糕。

:-)

Are there any obvious performance impacts to be considered when using any one of them?

根据定义,接口(interface)没有“性能影响”——它们只是对 API 的描述。

我不知道 SpannableString 在任何特定操作中都比 SpannedString 慢得多。但是,SpannableStringBuilder(除了格式化文本的 span 之外还允许操作文本)可能比 SpannableStringSpannedString 慢一些> 适用于各种事物。不过,性能差异是否足够重要将取决于使用情况。

关于Android Spanned、SpannedString、Spannable、SpannableString 和 CharSequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17546955/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com