Formatear automáticamente el número de teléfono en EditText
En mi aplicación, el usuario tiene que ingresar un número de teléfono en un campo EditText
utilizando el siguiente formato:
1 (515) 555-5555
- No se puede crear superíndice para texto de botón de Android con Html.fromHtml ()
- Símbolo de porcentaje en strings.xml
- ¿Cómo obtener el formato de fecha seleccionado por el usuario en Android?
- Java (Android) convertir la fecha de SQLite a "x días atrás"
- Formatear el número de teléfono de EditText como tipos de usuario
No quiero que el usuario escriba "(", ")" o "-" al ingresar el número; Quiero que estos caracteres se agreguen automáticamente.
Por ejemplo, supongamos que el usuario escribió 1
– los paréntesis después de "1" deberían agregarse automáticamente, de modo que se mostrara "1" y me gustaría tener una funcionalidad similar al borrar.
He intentado fijar el texto en el método onTextWatcher
interfaz de onTextWatcher
, pero no está trabajando; En su lugar está causando un error. Cualquier ayuda será apreciada.
- HTML.fromHtml Saltos de línea que desaparecen
- Hora del formato de la clase de tiempo de Android
- Establecer TextView texto de html-formatted cadena recurso en XML
- Formato Flotación a n decimales
- Cómo mostrar sólo la hora actual utilizando DateFormat.getDateTimeInstance () en android
- ¿Cuál es la diferencia entre android.text.format.DateFormat y java.text.DateFormat
- Cómo dar formato al tiempo no fecha en Android o Java?
- Android ImageView tamaño no escala con la imagen de origen
Probablemente se encuentre en un problema porque afterTextChanged
es reentrante, es decir, los cambios realizados en el texto hacen que el método se vuelva a llamar.
Si ese es el problema, una manera de hacerlo es mantener un indicador de variable de instancia:
public class MyTextWatcher implements TextWatcher { private boolean isInAfterTextChanged; public synchronized void afterTextChanged(Editable text) { if (!isInAfterTextChanged) { isInAfterTextChanged = true; // TODO format code goes here isInAfterTextChanged = false; } } }
Como alternativa, sólo puede utilizar PhoneNumberFormattingTextWatcher – no hace el formato que describió, pero de nuevo no tiene que hacer mucho para usarlo.
puedes probar
editTextPhoneNumber.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
Compruebe PhoneNumnerFormattingTextWatxher
En caso de que desee su propia implementación de TextWatcher entonces usted puede utilizar appollando folling:
import android.telephony.PhoneNumberFormattingTextWatcher; import android.text.Editable; /** * Set this TextWatcher to EditText for Phone number * formatting. * * Along with this EditText should have * * inputType= phone * * maxLength=14 */ public class MyPhoneTextWatcher extends PhoneNumberFormattingTextWatcher { private EditText editText; /** * * @param EditText * to handle other events */ public MyPhoneTextWatcher(EditText editText) { // TODO Auto-generated constructor stub this.editText = editText; } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub super.onTextChanged(s, start, before, count); //--- write your code here } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub super.beforeTextChanged(s, start, count, after); } @Override public synchronized void afterTextChanged(Editable s) { // TODO Auto-generated method stub super.afterTextChanged(s); } }
- Hay errores irrecuperables que deben ser corregidos primero
- Poner a los marcadores de Google Map al frente cambiando el índice Z en Android