最好我把我的问题作为一个例子
我在textview中有单词FREE
我将删除线(EXC,EXC)跨度应用于FREE这个词,所以我得到 FREE
然后我在字母之间插入空格,这就是问题,因为我得到了
F R E E 但我想 F R E E
它似乎只发生在空格(我也试过" \ u00a0"),因为我也尝试插入一个普通字符(L)并且没有问题,结果是 FLRLELE 而不是 F L R L E L E 。
感谢任何帮助。
由于
答案 0 :(得分: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 );