2

このコードを試して、「b」と「d」がまたがっている文字列「abcde」で TextView を作成しました。

private void testStringSpanning(TextView tv)
{
    // blue
    ForegroundColorSpan fcs = new ForegroundColorSpan( Color.BLUE );

    SpannableString  a = new SpannableString( "a" );
    SpannableString  b = new SpannableString( "b" );    
    b.setSpan( fcs, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
    SpannableString  c = new SpannableString( "c" );
    SpannableString  d = new SpannableString( "d" );    
    d.setSpan( fcs, 0, 1, Spannable.SPAN_INCLUSIVE_INCLUSIVE );
    SpannableString  e = new SpannableString( "e" );

    SpannableStringBuilder builder = new SpannableStringBuilder();
    builder.append(a);
    builder.append(b);
    builder.append(c);
    builder.append(d);
    builder.append(e);

    tv.setText( builder, BufferType.SPANNABLE);
}

結果は私が望むものではありません。a、c、e は無地の白、bd は青である必要があります。

私は何を間違っていますか?

'a' が無地の白、'bdce' が青の結果文字列

4

2 に答える 2

0

Span を C と E の文字に設定すると、その時点で正しいように見えますか? 文字 B の setSpan が残りの文字の「デフォルト」を上書きしているように感じます。それが暗闇での私のショットです。

于 2012-08-27T21:18:11.263 に答える