【问题标题】:Spannables & Spanned Text in Android EditTextAndroid EditText 中的 Spannables 和跨区文本
【发布时间】:2011-04-27 14:08:44
【问题描述】:

我获取 html 数据并希望在 android 的富文本编辑器中显示它。只要他们只有粗体,斜体等基本内容,我就可以做到。如何确定文本是否使用了其他 Spanned 或 spannables,这会给我不兼容的早期警告?

Spanned.getSpans() 有效,但它特定于每个跨度,例如下划线,字体。我必须为所有变体调用 getSpans。难道没有一种方法可以返回文本中使用的所有类型的跨度吗?

我真的不想为此使用正则表达式或字符串操作。

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以将Object.class 传递给Spanned.getSpans() 以获取所有跨度,也可以传递CharacterStyle.class 以获取所有样式跨度。

    【讨论】:

    • StyleSpan [] spanned = (StyleSpan[]) spannable.getSpans(0, spannable.length(), Object.class);不起作用,类也不会转换为 Spanned[]
    • 如果您将Object.class 作为最后一个参数,那么结果是Object[],而不是StyleSpan[]
    • 这个想法是你传递一些类并获取所有作为此类或其子类实例的跨度。
    • 这意味着我将不得不做我最害怕的事情...检查每个 android.text 包
    • 不,没有。如果要检查Spanned 是否包含任何跨度,则可以调用Spanned.getSpans(),并以Object.class 作为最后一个参数,不要将结果转换为任何其他类型并检查结果是否为空。
    猜你喜欢
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多