2

さまざまな色を設定しようとしています

            str.append(" ").append(isBlue ? "b" : "p");
            SpannableString spannable = new SpannableString(str);
            spannable.setSpan(new ForegroundColorSpan(isBlue ? R.color.blue: R.color.pink),
                    spannable.length() - 1,
                    spannable.length(),
                    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
            miscTextView.setText(spannable);

strのインスタンスですStringBuilder。true の場合は最後の文字miscTextViewが青になりisBlue、それ以外の場合はピンクになり、残りのテキストは黒のままになると予想しています。
しかし、どちらの場合も最後の文字が灰色であることが判明し、本当に混乱しています。私は何を間違えましたか?

編集: カラー リソース xml を既に確認しています。Intellij は、xml コード行の左側に色を表示します。

4

1 に答える 1

4

R.color.blueを返すを使用していますid。代わりに、次のように色を取得する必要があります。

getResources().getColor(R.color.blue)

したがって、次のようになります。

spannable.setSpan(new ForegroundColorSpan(isBlue ? getResources().getColor(R.color.blue): getResources().getColor(R.color.pink)),
                    spannable.length() - 1,
                    spannable.length(),
                    Spanned.SPAN_INCLUSIVE_EXCLUSIVE);

グレーの理由は、R.color.blue(id値) の値がグレーに対応する整数である可能性があるためです。

于 2013-11-21T06:06:09.857 に答える