Я знаю, но его (насколько я знаю?) Единственный способ отметить текст в элементе управления EditText.
EditText поддерживает объекты Spannable
, поэтому вы можете применять основные цвета к тексту (например, цвета фона) самостоятельно.
This sample project демонстрирует поле поиска, которое применяет цвет фона к большей части текста на основе результатов поиска. Ключевой частью является 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
предназначен для ввода, а не для вывода.
'setSelection()' не для того, чтобы «выделить текст», а для установки выбора для операций cut/copy/paste. Следовательно, это только имеет смысл в «EditText» с фокусом. Какова ваша цель выделить текст в нескольких виджетах EditText? – CommonsWare
Я знаю, но его (насколько я знаю?) Единственный способ отметить текст в элементе управления EditText. Я просто хочу преобразовать определенные строки ввода в реальном времени, и если вы нажмете на один раздел входной строки, я хочу выделить соответствующий раздел выходной строки. –