textinputedittext style studio propiedades example edittext android mask android-edittext

style - Entrada enmascarada usando el widget EditText en Android



textinputedittext (6)

¿Hay alguna manera de que pueda especificar una máscara de entrada para el control EditText en Android?

Quiero poder especificar algo como ### - ## - #### para un Número de Seguro Social. Esto hará que cualquier entrada no válida se rechace automáticamente (por ejemplo, escribo caracteres alfabéticos en lugar de dígitos numéricos).

Me doy cuenta de que puedo agregar un OnKeyListener y verificar manualmente la validez. Pero esto es tedioso y tendré que manejar varios casos de borde.

Zumbido


Este site ofrece 2 buenas clases que ayudan con el enmascaramiento que me parecieron bastante útiles.

Necesitas usar los ítems de los comentarios para mejorarlo. Pero vale la pena agregarlo a su programa para facilitar el enmascaramiento de sus vistas EditText para muchas máscaras.


La forma más sencilla que conozco de usar una máscara en EditText en sus programas Android en Android Studio es usar la biblioteca MaskedEditText ( enlace GitHub ). Es un tipo de texto de edición personalizado con Watcher que le permite configurar una sugerencia con un color diferente (si lo desea, estará disponible incluso cuando el usuario ya comenzó a escribir), enmascarar y es muy fácil de usar :-)

compile ''ru.egslava:MaskedEditText:1.0.5'' <br.com.sapereaude.maskedEditText.MaskedEditText android:id="@+id/phone_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:typeface="monospace" mask:allowed_chars="1234567" mask:mask="###-##-##" app:keep_hint="true" />

¡Y eso es!


Puede echar un vistazo a la clase android.telephony.PhoneNumberFormattingTextWatcher. Enmascara una entrada de texto de número de teléfono con el patrón ### - ### - ####.


Puedes usar este efecto en EditText


Intente usar un InputFilter lugar de un OnKeyListener . Esto significa que no tiene que preocuparse por el seguimiento de las pulsaciones de teclas individuales y también manejará cosas como pegar en un campo que sería difícil de manejar con un OnKeyListener .

Podrías echar un vistazo a la fuente de las implementaciones de InputFilter que vienen con Android para darte un punto de partida para escribir el tuyo.


String phoneNumber = "1234567890"; String text = String.valueOf( android.telephony.PhoneNumberUtils.formatNumber(phoneNumber) ); //formatted: 123-456-7890 editTextMobile.setText(text); //set editText text equal to new formatted number editTextMobile.setSelection(text.length()); //move cursor to end of editText view

Úselo en una función onKey para onKey un delicioso sexo sobre el conejito sobre la marcha con números de teléfono formateados.