Sto lavorando a un'applicazione in cui l'utente può pubblicare contenuti in un feed. Nel mio testo di modifica (usato per comporre) il colore del testo è grigio. Tuttavia, quando l'utente digita un tag hash, ad es. #help Ho bisogno di colorare il testo in nero durante la digitazione, quindi quando l'utente digita "#" il testo deve essere colorato in nero fino a quando non inizia una nuova parola, quindi il colore del testo deve tornare in grigio.Modifica il colore del testo mentre l'utente digita i tag hash
Ho provato a usare un osservatore di testo e una stringa da colorare.
Ecco quello che ho fatto con la textwatcher onTextChanged
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//Remove Text watcher to prevent infinite look
mTextField.removeTextChangedListener(contentFieldWatcher);
String startChar = null;
startChar = Character.toString(s.charAt(start));
L.i(getClass().getSimpleName(), "CHARACTER OF NEW WORD: " + startChar);
if (startChar.equals("#")) {
tagCheck(s.toString().substring(start), start, start + count);
}
}
metodo tagCheck
private void tagCheck(String s, int start, int end) {
mSpannable.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.black_colour)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mSpannable è uno Spannable.
Il problema con questo metodo è che "#" viene visualizzato come startChar, tuttavia quando l'utente digita il carattere successivo, sia esso simbolo o lettera, viene visualizzato come startChar. Dove come se l'utente digitasse santa - 's' rimane startChar. Quindi il problema che sto affrontando è come colorare dinamicamente il testo mentre l'utente digita un hashtag.
Le lettere così semplici funzionano correttamente, tuttavia quando si utilizza un simbolo non lo fa. Spero che la domanda abbia chiarezza .. ho guardato questo per alcuni giorni ed è tutto diventato confuso :)
Si noti che la maggior parte fanno hashtag chiaro da personaggi inapropriate –
c'è un problema con auto suggerire, se il l'utente fa clic su un suggerimento automatico, perdiamo la colorazione –