Lo so, ma è (per quanto ne so?) L'unico modo per contrassegnare il testo in un controllo EditText.
EditText supporta Spannable
oggetti, in modo da poter applicare evidenzia al testo (ad esempio, i colori di sfondo) da soli.
This sample project mostra un campo di ricerca che applica un colore di sfondo a una porzione di testo più grande in base ai risultati della ricerca. La parte fondamentale è il metodo 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);
}
nota, però, che il vostro "stringa di output", probabilmente dovrebbe essere un TextView
, non un EditText
. EditText
è per input, non output.
'setSelection()' non deve "evidenziare il testo", ma impostare la selezione per le operazioni di taglia/copia/incolla. Quindi, ha senso solo su "EditText" con il focus. Qual è il tuo obiettivo per evidenziare il testo in più widget di 'EditText'? – CommonsWare
Lo so, ma è (per quanto ne so?) L'unico modo per contrassegnare il testo in un controllo EditText. Voglio solo convertire determinate stringhe di input in tempo reale, e se clicchi su una sezione della stringa di input, voglio evidenziare la sezione appropriata della stringa di output. –