Android 有关于跨距和可跨距文本的示例吗

Android 有关于跨距和可跨距文本的示例吗,android,android-widget,Android,Android Widget,我正在努力使用EditText和Spanable text对象,这些天来,我已经阅读了大约十次API文档,即使我不确定自己是否理解正确。因此,我正在寻找一种示例,向我展示如何利用EditText和Spanable。由于您没有指定API中无法掌握的内容,因此很难回答您的问题(简短回答:将您的问题改写为特定问题,而不是一般问题) 一个典型的可扩展示例是将EditText中的选定文本转换为斜体: Spannable str = mBodyText.getText(); if(mBodyText.ge

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

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

一个典型的可扩展示例是将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中,您可以找到其他类型的跨距(尤其是
ImageSpan
,这是新改装的机器人中常见的问题)。

我也刚刚开始尝试解决这个问题,而且看起来不必要的棘手

下面是一个向现有视图添加新的可扩展文本的工作方法。我想在视图中添加彩色文本,这似乎是唯一的方法

虽然这感觉像是一个丑陋的黑客,但您可以创建一个虚拟文本视图(在任何地方都没有显示)并在那里设置文本样式,然后将该样式文本附加到您想要的任何位置。这要归功于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);

但是我无法让这篇文章真正显示新的广度效果,所以我放弃了。

这个回复对我很有帮助,谢谢。但我还有一大堆问题,我必须解决。正如你在上面所描述的,这里有一个链接来展示我在这个问题上所面临的问题。如果您需要有关该问题的更多详细信息,这里有另一个链接。也许,上面的链接更能说明问题所在。虽然
SpannableString
的目的很明显,但是
span-dstring
的示例将非常有用,因为我完全不清楚它的用途以及如何首先创建它。对于希望使用Spanable和TextVew做任何事情的人来说,这是一个完美的答案。有关一些示例,请参阅和。