【问题标题】:Android: Using a getStyle() method for underlinespan to remove the spanAndroid:使用 getStyle() 方法进行 underlinespan 删除跨度
【发布时间】:2016-09-04 18:36:19
【问题描述】:

我正在寻找一种方法来确定字符或字符串是否使用类似于 StyleSpan 对象的 getStyle() 方法的方法来确定字符或字符串是否加下划线,但使用的是 UnderlineSpan 对象。

这是一个使用 StyleSpan 类的示例,我需要一种方法来测试文本是否以类似的方法加下划线:

StyleSpan[] rt = str.getSpans(selectionStart, selectionEnd, StyleSpan.class);
boolean exists = false;
for (int i = 0; i < rt.length; i++) {
    if (rt[i].getStyle() == android.graphics.Typeface.ITALIC){
        str.removeSpan(rt[i]);
        exists = true;
    }
}

有没有办法为 UnderlineSpan 对象完成此操作?

【问题讨论】:

    标签: java android html underline spannablestring


    【解决方案1】:

    当然,只需将 getSpans() 调用中的 StyleSpan.class 参数更改为 UnderlineSpan.class。

    【讨论】:

    • 不起作用,我在下面看到一条摇摆不定的线,告诉我将其转换为 styleSpan
    • 您是否也更改了作业的左侧?他们需要匹配,即你需要有 UnderlineSpan[] rt = ...
    • 好像不行,左右两边都试了​​UnderlineSpan,但是好像没有弹出getStyle()方法。 UnderlineSpan[] rt = s.getSpans(styleStart, position, UnderlineSpan.class);
    • 带有 getStyle() 的行只是检查样式是否为 ITALIC,因此它可以删除斜体样式跨度。您不需要这样做,因为大概您想删除所有下划线跨度。所以你可以用 str.removeSpan(rt[i]); 替换整个 if() 语句
    • 我很清楚你可以删除 if 语句并且它仍然有效,但是我想知道是否有一种方法可以测试它是否为不同的目的而下划线,但我想因为它只是一个 underlineSpan 它没有办法检查 typeFace 因为它只有一种样式。我想我会结束这个问题。
    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 2014-08-05
    相关资源
    最近更新 更多