構文ハイライターの作成方法を学んでいます。テキストの一部のテキストの色を変更し、残りをデフォルトの色のままにする方法を教えてください。
私が言いたいのは、ほとんどの IDE が行うことと同様のことを行うということです。キーワードを強調表示し、他のキーワードを黒色にします。
Android EditText、または他のビューでこれを行うにはどうすればよいですか?
構文ハイライターの作成方法を学んでいます。テキストの一部のテキストの色を変更し、残りをデフォルトの色のままにする方法を教えてください。
私が言いたいのは、ほとんどの IDE が行うことと同様のことを行うということです。キーワードを強調表示し、他のキーワードを黒色にします。
Android EditText、または他のビューでこれを行うにはどうすればよいですか?
「EditText」を IDE (つまり、Eclipse) のように動作させたい場合は、別の色にしたい単語のリストを定義してから、次のような関数を追加する必要があります。
EditText et = new EditText(mContext);
et.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
});
次に、「spanable」クラスを使用してキーワードに色を付けます。
Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");
wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
et.setText(wordtoSpan);
キーワードの開始インデックスと終了インデックスを見つけるロジックを実装し、文字列を繰り返し処理して必要な各アイテムの色を設定する必要があります。
このようなhtmlフォームを使用できます。
textView..setText(Html.fromHtml("<font size="5">Here is a size 5 font</font>"));
textView..setText(Html.fromHtml("<font color="#990000">This text is hex color #990000</font>
<br />"));