Chciałbym edytować zawartość pola EditText
za każdym razem, gdy użytkownik wpisze nową postać. Zasadniczo chcę sformatować numer telefonu za pomocą libphonenumber
.Formatowanie numeru telefonu EditText jako typów użytkownika
Zaimplementowałem TextWatcher
, który odczytuje treść pola i formatuje ją do formatu telefonu. Ale za każdym razem, gdy ustawiam tekst EditText
z sformatowanym łańcuchem, watcher jest ponownie wywoływany, ustawia tekst jeszcze raz i utknie w nieskończonej pętli.
Jaki jest najlepszy lub właściwy sposób edycji tekstu jako typów użytkowników?
@Override
public void afterTextChanged(Editable editable) {
if (editable.length() > 1) {
try {
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumber numberProto = phoneUtil.parse(editable.toString(), "BR");
String formatted = phoneUtil.format(numberProto, PhoneNumberFormat.NATIONAL);
telephone.setText(formatted);
} catch (NumberParseException e) {
Log.d("Telefone", "NumberParseException was thrown: " + e.toString());
}
}
}
Jeśli mogę zadać inne pytanie, po zmianie tekstu kursor powraca do początku pola tekstowego. Jak mogę go zatrzymać na końcu? – Guilherme
Wypróbuj tę odpowiedź na temat pozycjonowania kursora: http://stackoverflow.com/a/8035171/2399024 – donfuxx