EditText
次の問題があります。を呼び出して複数のコントロールのテキストを同時に強調表示しようとしていますviewXYZ.setSelection(int, int)
が、選択範囲はフォーカスされたビューにのみ表示されます。
これを回避して、焦点の合っていないテキストを強調表示する方法はありますEditText
か?たぶんonDraw()
メソッドをオーバーロードすることによって?
EditText
次の問題があります。を呼び出して複数のコントロールのテキストを同時に強調表示しようとしていますviewXYZ.setSelection(int, int)
が、選択範囲はフォーカスされたビューにのみ表示されます。
これを回避して、焦点の合っていないテキストを強調表示する方法はありますEditText
か?たぶんonDraw()
メソッドをオーバーロードすることによって?
私は知っていますが、(私が知る限りでは)EditTextコントロールでテキストをマークする唯一の方法です。
EditTextはSpannable
オブジェクトをサポートしているため、テキスト(背景色など)に自分でハイライトを適用できます。
このサンプルプロジェクトは、検索結果に基づいて大きなテキストに背景色を適用する検索フィールドを示しています。重要な部分はsearchFor()
方法です:
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
ではなく、である必要があることに注意してくださいEditText
。EditText
出力ではなく入力用です。