有没有关于 Spanned 和 Spannable 文本的例子

Posted

技术标签:

【中文标题】有没有关于 Spanned 和 Spannable 文本的例子【英文标题】:Is there any example about Spanned and Spannable text 【发布时间】:2011-01-10 17:13:48 【问题描述】:

我正在努力使用 EditText 和 Spannable 文本对象,这些天来,我已经阅读了大约十次 API 文档,即使我不确定我是否理解正确。因此,我正在寻找一种示例,向我展示如何使用 EditText 和 Spannable。

【问题讨论】:

chrisumbel.com/article/… 对于希望使用 Spannable 和 Textveiw 做任何事情的每个人来说,这都是一个完美的答案。 见here和here的一些例子。 【参考方案1】:

由于您没有指定您无法从 API 中掌握的内容,因此很难回答您的问题(简短回答:将您的问题重写为具体问题而不是一般问题)。

一个典型的 Spannable 示例是这样的,将 EditText 中的选定文本转换为斜体:

Spannable str = mBodyText.getText(); 
if(mBodyText.getSelectionEnd() > mBodyText.getSelectionStart()) 
  str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),  
                      mBodyText.getSelectionStart(), mBodyText.getSelectionEnd(),  
                      Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
else
  str.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC),
              mBodyText.getSelectionEnd(),
              mBodyText.getSelectionStart(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

这是从其他东西剪切和粘贴的,因此您的直接可粘贴性可能会受到影响,但它至少显示了Spannable 的工作示例(在本例中为StyleSpan)。在 API 中,您可以找到其他类型的 Span(尤其是 ImageSpan,这是新转换的 droiders 中的常见问题)。

【讨论】:

这个回复对我很有帮助,谢谢。但是我还有一堆问题,我必须解决。如上所述,这是一个链接,可以显示我所面临的问题。 ***.com/questions/2093111/…如果您需要有关问题的更多详细信息,这里是另一个链接。 code.google.com/p/blogaway/issues/detail?id=32 可能,上面的链接更能说明问题所在。 虽然SpannableString 的目的很明显,但SpannedString 的例子会很有帮助,因为我完全不清楚它的用途以及如何创建它地点。【参考方案2】:

我也刚刚开始尝试弄清楚,这似乎是不必要的棘手。

这是一种将新的可跨文本添加到现有视图的工作方法。我想在视图中添加彩色文本,这似乎是唯一的方法。

虽然这感觉像是一个丑陋的 hack,但您可以创建一个虚拟 TextView(未在任何地方显示)并在其中设置文本样式,然后将该样式文本附加到您想要的任何位置。归功于 anddev.org 上的 iifuzz。我的代码如下所示:

    spanbuffer = new TextView(context);
    spanbuffer.setText(newText, TextView.BufferType.SPANNABLE);
    Spannable s = (Spannable) spanbuffer.getText();
    s.setSpan(new ForegroundColorSpan(Color.RED), 0, newText.length() - 1, 0);
    this.append(s);

我认为您应该能够使用 SpannableFactory 创建新的可跨文本,如下所示:

    Spannable s = Spannable.Factory.getInstance().newSpannable(newText);

但我无法让这个文本真正显示新的跨度效果,所以我放弃了。

【讨论】:

以上是关于有没有关于 Spanned 和 Spannable 文本的例子的主要内容,如果未能解决你的问题,请参考以下文章

Spannable

什么是Objective-C中Android的“Spannable”等价物

自定义 Spannable = ImageSpan + BackgroundColorSpan + ClickableSpan

如何将 <Spanned> 放入 list.setAdapter?

我可以在 android 中将 Spannable 转换为 String 以加载 ExpandableListView 吗?

Android 自定义 View 中使用 Spannable