2010-05-26 6 views
14

¿Hay alguna manera de especificar una máscara de entrada para el control EditText en Android?Entrada enmascarada usando el widget EditText en Android

Quiero ser capaz de especificar algo como ### - ## - #### para obtener un número de seguridad social. Esto hará que cualquier entrada no válida sea rechazada automáticamente (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 extremos.

Buzzy

+0

lo que he entendido es que desea especificar el tipo de entrada, como el número, caracteres, la contraseña (tipo)? En ese caso, puede usar el método setInputType (int type) también consulte http://developer.android.com/reference/android/text/InputType.html o bien puede especificar en XML al declarar el texto de edición – Vamsi

+1

que hice échale un vistazo a esos tipos. Necesito más control sobre el formato del texto que se ingresa. – Buzzy

Respuesta

18

tratar de usar un InputFilter en 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 manejar con un OnKeyListener.

Puede echar un vistazo a source of the InputFilter implementations que vienen con Android para darle un punto de partida para escribir el suyo.

+1

Gracias. La fuente de InputFilter ofrece algunas ideas geniales. – Buzzy

+8

El enlace está roto. – theblang

+0

Se corrigió el enlace. – friederbluemle

3

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 ### - ### - ####.

2
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 

utilizar esto en una función de onKey delicioso conejo de sexo en la marcha con números de teléfono con formato.

0

Este site da un buen 2 clases que ayudan con el enmascaramiento que encontré bastante útil.

Necesita usar los elementos en los comentarios para mejorarlo. Pero vale la pena agregarlo a tu programa para facilitar el enmascaramiento de tus vistas de EditText para muchas máscaras.

0

se puede utilizar este efect en EditarTexto

enter image description here

1

La forma más sencilla que conozco para usar una máscara en EditarTexto en sus programas de Android en Android Studio es utilizar MaskedEditText biblioteca (GitHub link). Es un tipo de EditText personalizado con Watcher que le permite establecer una sugerencia con diferentes colores (si desea que esté disponible incluso cuando el usuario ya comenzó a escribir), máscara 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 todo!

enter image description here

Cuestiones relacionadas