- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在一个类似 wiki 的解析器中工作,它为一组标记 token 创建跨度。它正在工作,但在 token 迭代器内,我经常需要将 SpannableStringBuilder
上的部分结果转换为 SpannableString
。这被频繁调用,因此我正在寻找最有效的解决方案,并避免创建额外的对象。
目前我正在使用;
SpannableStringBuilder stuff=complex_routine_that_builds_it();
SpannableString result=SpannableString.valueOf(stuff);
然而,这个 valueOf
调用在内部从头开始构建一个 SpannableString
类型,执行 toString
和一个循环来复制分配的 span
.
正如 SpannableStringBuilder
名称所暗示的那样,我认为也许有一种更快的方法可以从构建器获取 SpannableString
。这是真的吗?
最佳答案
当您可以像在 TextView
中一样直接使用 SpannableString
时,无需将 SpannableStringBuilder
转换为 SpannableString
:
SpannableStringBuilder stuff = complex_routine_that_builds_it();
textView.setText(stuff);
正如问题已经表明的那样,如果绝对必要,您可以进行转换
SpannableStringBuilder stuff = complex_routine_that_builds_it();
SpannableString result = SpannableString.valueOf(stuff);
但是您应该考虑为什么您甚至需要进行这种转换?只需使用原始的SpannableStringBuilder
即可。
SpannableString
与 SpannableStringBuilder
这两者之间的区别类似于String
和StringBuilder
之间的区别。 String
是不可变的,但您可以更改 StringBuilder
中的文本。
同样,SpannableString
中的文本是不可变的,而 SpannableStringBuilder
中的文本是可变的。但值得注意的是,这仅适用于文本。它们的跨度(甚至是 SpannableString
)都可以更改。
相关
关于android - 从 SpannableStringBuilder 获取 SpannableString 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23180107/
我正在使用一段代码,该代码在 SpannableString 文本中查找正则表达式,并删除该表达式的任何实例的第一个和最后一个字符 - 在本例中,文本由 [方括号] 绑定(bind)。 输出应该是相同
我有一段代码使用 SpannableString 将一些图像添加到 EditText 中,如下所示: SpannableString ss = new SpannableString("Some ra
我知道 SpannableString 可以在一个 TextView 中设置不同的文本大小,但如果以编程方式添加 TextView ,则它不起作用。 String s = "Best Ever"; S
我想通过 Intent 发布一个带有 SpannableString 的对象。我让对象实现 Serializable,但它会抛出 java.io.NotSerializableException: a
目前我有一个 SpannableString 对象,其中设置了多个 Clickable 对象。因此,一个字符串有许多可点击对象,并且根据用户点击的单词/部分,应用程序将继续并处理该点击事件。前几天我在
我正在尝试构建一个 SpannableString,使其看起来像这样: 两个字符 (m, s) 应该比其他字符小。我试图将所有文本保存在一个 SpannableString 中,并且我还尝试通过 Sp
我正在寻找如何使用 ImageSpan 构建和显示 Android SpannableString 的示例。类似笑脸的内联显示。 非常感谢。 最佳答案 找到以下内容,它似乎可以完成这项工作: publ
我想创建与此图片类似的东西: 我设法用 SpannableStringBuilder 创建了evertyhing,橙色圆角矩形除外。我可以使用 BackgroundColorSpan 将背景设置为该颜
我有一个 TextView,在其中显示具有不同 Span 大小的 SpannableString。我需要知道 SpannableString 中最后一个单词的确切高度,但我使用的方法是错误的。我做错了
情况: 我有读取通知文本的代码 String notificationText = sbn.getNotification().extras.getString("android.text"); 当读
对于一个项目,我必须在 EditText 中使用一些属性编辑文本,例如粗体、斜体、大小等。因此,我制作了一个 CustomSpan,它实现了 StyleSpan,具有我需要的所有属性。在我的代码下面:
我有一个网址,我希望它只显示为一个单词,单击它会从我的警报对话框中打开 Web 浏览器。一切正常,只是现在显示了完整的网址。我不知道如何隐藏这一点。这是我的 java 文件中的代码。 Tv = ((T
我有一个 HTML 格式的字符串并保存为 SpannableString。在配置更改等 onSaveInstanceState 之前调用 onRestoreInstanceState 以恢复状态等。我
我有一个带有自定义列表适配器(扩展了 BaseAdapter)的 ListView。我的列表项的 View 是从这个布局中膨胀的: 在 g
你好,下午好,我需要 SpannableString 类的帮助,我对这个类很陌生,到目前为止,我已经在我的 onCreate() 方法中创建了这段代码: String texto = "Tex
我使用以下代码,它将错误的文本范围包装为粗体 final StyleSpan span = new StyleSpan(BOLD); SpannableString ss = new
我有一个 TextView,里面有一个 SpannableString 来突出显示搜索到的词。像这样: 可以看出,我正在使用 android:lineSpacingExtra 为线条提供合适的间距,
我想在我的 TextView 中显示一个图像,在文本本身的前面。我尝试了 CompoundDrawable 但第二行的文本没有出现在第一行的图像下方。 我需要这样的东西: var imageSpan
我正在尝试制作一款游戏来帮助 children 学习数学。我给代码编号上色,以便它们可以遵循逻辑。我还使用 textView.append() 构建一个长字符串以放入 Activity 中。 因为我在
添加到 spannable 的 span 的优先级会影响它在 TextView 中的外观。当我们向如下所示的 spannable 添加两个嵌套的字符样式时 SpannableStringBuilder
我是一名优秀的程序员,十分优秀!