2

最好我把我的问题作为一个例子

我在文本视图中有一个单词 FREE 我对单词 FREE
应用删除线(EXC,EXC)跨度,所以我得到FREE
然后我在字母之间插入空格,问题就来了,因为我得到 F R E E但我想要FREE
似乎它只发生在空格上(我也试过“\u00a0”),因为我也尝试插入一个普通字符(L)并且没有问题,结果是FLRLELE而不是F L R L E L E

任何帮助表示赞赏。

谢谢

4

1 回答 1

0

您是逐个字符地应用跨度,还是应用到整个子字符串?

当我尝试前一种方法时,我遇到了同样的问题;但是当我改为后者时,它工作得很好。

结果图片

这是我使用的代码的摘录。

if 条件在子字符串周围添加删除线填充。

    //  ↑↑↑  Several layers of loops...  :-X

    mySubString = textview_Text.substring ( indexStart, indexEnd );

    for ( Integer charIndex = 0 ; charIndex < mySubString.length() ; charIndex++ )
        {
            charOfIndex = String.valueOf ( mySubString.charAt ( charIndex ) );

            if ( charIndex > 0 )
                { charOfIndex_Previous = String.valueOf ( mySubString.charAt ( charIndex - 1 ) ); }
            else
                { charOfIndex_Previous = charOfIndex; }

            if ( charIndex < mySubString.length() - 1 )
                { charOfIndex_Next = String.valueOf ( mySubString.charAt ( charIndex + 1 ) ); }
            else
                { charOfIndex_Next = charOfIndex; }

            if ( ( charOfIndex.equals ( charSpace ) )
            && ( ! charOfIndex_Next.equals ( charSpace ) ) )
                { spanStart = indexFromPreviousLoop + charIndex; }

            if ( ( ! charOfIndex_Previous.equals ( charSpace ) )
            && ( charOfIndex.equals ( charSpace ) ) )
                { spanEnd = indexFromPreviousLoop + charIndex + 1; }
        }

    mySpannable.setSpan ( new StrikethroughSpan (), spanStart, spanEnd, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE );
于 2015-08-08T04:44:54.623 回答