2

特定のキーワードのフォントの色を変更したい。私が達成しようとしているのは、特定のキーワードが異なる色で表示されるプログラミング環境のテキスト エディターに似ています。

たとえば、赤の「printf」、緑の「scanf」、濃い青の括弧などです。

文字列はインテントから余分に受け取ることに注意してください。つまり、定型文ではありません……文字列には、任意の数の単語を任意の組み合わせで含めることができます。

私がしたいのは、特定の単語のフォントの色を変更することだけです

4

2 に答える 2

1

Spannable色付けする単語を見つけるために a を反復処理することは、通常、 または同様の方法の問題indexOf()ですTextUtils

言葉を着色することは、ForegroundColorSpan.

このサンプル プロジェクトは、BackgroundColorSpan. 主な方法は次のとおりです。

  private void searchFor(String text) {
    TextView prose=(TextView)findViewById(R.id.prose);
    Spannable raw=new SpannableString(prose.getText());
    BackgroundColorSpan[] spans=raw.getSpans(0,
                                             raw.length(),
                                             BackgroundColorSpan.class);

    for (BackgroundColorSpan span : spans) {
      raw.removeSpan(span);
    }

    int index=TextUtils.indexOf(raw, text);

    while (index >= 0) {
      raw.setSpan(new BackgroundColorSpan(0xFF8B008B), index, index
          + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
      index=TextUtils.indexOf(raw, text, index + text.length());
    }

    prose.setText(raw);
  }

ここで、TextView色付けする目的のテキストを含む a が存在し、 ( text) を検索する文字列が与えられた場合、既存の をすべて削除しBackgroundColorSpans、検索語のすべての出現箇所を見つけて new を適用しますBackgroundColorSpans

于 2013-06-30T18:08:59.513 に答える