2010-05-26 24 views
14

C'è un modo per specificare una maschera di input per il controllo EditText in Android?Ingresso mascherato utilizzando il widget EditText in Android

Desidero essere in grado di specificare qualcosa come ### - ## - #### per un numero di previdenza sociale. Ciò causerà il rifiuto automatico di qualsiasi input non valido (ad esempio, digito caratteri alfabetici anziché cifre numeriche).

Mi rendo conto che posso aggiungere un OnKeyListener e controllare manualmente la validità. Ma questo è noioso e dovrò occuparmi di vari casi limite.

Buzzy

+0

quello che ho capito è che si desidera specificare il tipo di ingresso, come il numero, i personaggi, la password (tipo)? In tal caso è possibile utilizzare il metodo setInputType (int type) anche in http://developer.android.com/reference/android/text/InputType.html oppure è possibile specificare in XML dichiarando il testo di modifica – Vamsi

+1

Ho fatto dai un'occhiata a quei tipi Ho bisogno di più controllo sul formato del testo inserito. – Buzzy

risposta

18

Prova ad utilizzare un InputFilter piuttosto che un OnKeyListener. Ciò significa che non ti devi preoccupare di tenere traccia delle singole pressioni dei tasti e gestirà anche operazioni come incollare in un campo che sarebbe doloroso gestire con un OnKeyListener.

Si potrebbe dare un'occhiata allo source of the InputFilter implementations fornito con Android per darvi un punto di partenza per scrivere il proprio.

+1

Grazie. La fonte di InputFilter offre alcuni spunti interessanti. – Buzzy

+8

Il collegamento è interrotto. – theblang

+0

risolto il collegamento. – friederbluemle

3

Si potrebbe dare un'occhiata alla classe android.telephony.PhoneNumberFormattingTextWatcher. Maschera un input di testo con il numero di telefono con il modello ### - ### - ####.

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 

Usare questa in una funzione onKey per deliziosi on-the-fly di sesso coniglio con i numeri di telefono formattati.

0

Questo site offre ben 2 classi che aiutano con il mascheramento che ho trovato abbastanza utile.

È necessario utilizzare gli elementi nei commenti per migliorarlo. Ma vale la pena aggiungere al tuo programma per mascherare le tue viste EditText per molte maschere.

0

è possibile utilizzare questo efect in EditText

enter image description here

1

Il modo più semplice che conosco per usare una maschera sul EditText nei programmi Android in Android Studio è quello di utilizzare MaskedEditText libreria (GitHub link). È un tipo di EditText personalizzato con Watcher che ti permette di impostare un suggerimento con colori diversi (se vuoi che sia disponibile anche quando l'utente ha già iniziato a digitare), maschera ed è molto facile da usare :-)

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" 
    /> 

E questo è!

enter image description here