最好我把我的问题作为一个例子
我在文本视图中有一个单词 FREE 我对单词 FREE
应用删除线(EXC,EXC)跨度,所以我得到FREE
然后我在字母之间插入空格,问题就来了,因为我得到
F R E E但我想要FREE
似乎它只发生在空格上(我也试过“\u00a0”),因为我也尝试插入一个普通字符(L)并且没有问题,结果是FLRLELE而不是F L R L E L E。
任何帮助表示赞赏。
谢谢
最好我把我的问题作为一个例子
我在文本视图中有一个单词 FREE 我对单词 FREE
应用删除线(EXC,EXC)跨度,所以我得到FREE
然后我在字母之间插入空格,问题就来了,因为我得到
F R E E但我想要FREE
似乎它只发生在空格上(我也试过“\u00a0”),因为我也尝试插入一个普通字符(L)并且没有问题,结果是FLRLELE而不是F L R L E L E。
任何帮助表示赞赏。
谢谢
您是逐个字符地应用跨度,还是应用到整个子字符串?
当我尝试前一种方法时,我遇到了同样的问题;但是当我改为后者时,它工作得很好。
这是我使用的代码的摘录。
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 );