特定のキーワードのフォントの色を変更したい。私が達成しようとしているのは、特定のキーワードが異なる色で表示されるプログラミング環境のテキスト エディターに似ています。
たとえば、赤の「printf」、緑の「scanf」、濃い青の括弧などです。
文字列はインテントから余分に受け取ることに注意してください。つまり、定型文ではありません……文字列には、任意の数の単語を任意の組み合わせで含めることができます。
私がしたいのは、特定の単語のフォントの色を変更することだけです
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
。