2010-05-26 16 views
14

Czy istnieje sposób określenia maski wprowadzania dla formantu EditText w systemie Android?Zamaskowane dane wejściowe za pomocą widżetu EditText w systemie Android

Chcę móc podać coś w stylu ### - ## - #### na numer ubezpieczenia społecznego. Spowoduje to automatyczne odrzucenie nieprawidłowych danych wejściowych (np. Ja wpisuję alfabetyczne znaki zamiast cyfr).

Zdaję sobie sprawę, że mogę dodać OnKeyListener i ręcznie sprawdzić ważność. Jest to jednak uciążliwe i będę musiał radzić sobie z różnymi przypadkami.

Żywa

+0

tego co zrozumiałem to chcesz określić typ wejścia, takie jak liczby, znaki, hasło (typ)? W takim przypadku możesz użyć metody setInputType (typ int), zajrzyj również do http://developer.android.com/reference/android/text/InputType.html lub możesz określić w XML podczas deklarowania tekstu edycji – Vamsi

+1

spójrz na te typy. Potrzebuję większej kontroli nad formatem wprowadzanego tekstu. – Buzzy

Odpowiedz

18

Spróbuj użyć InputFilter raczej niż OnKeyListener. Oznacza to, że nie musisz martwić się śledzeniem poszczególnych naciśnięć klawiszy, a także zajmie się wklejaniem do pola, które byłoby bolesne w obsłudze z OnKeyListener.

Możesz rzucić okiem na source of the InputFilter implementations dostarczany z Androidem, aby dać ci punkt wyjścia do pisania własnych.

+1

Dziękuję. Źródło InputFilter oferuje kilka wspaniałych wglądów. – Buzzy

+8

Link jest uszkodzony. – theblang

+0

Naprawiono link. – friederbluemle

3

Możesz rzucić okiem na klasę android.telephony.PhoneNumberFormattingTextWatcher. Maskuje on tekst wprowadzany przez numer telefonu za pomocą wzoru ### - ### - ####.

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 

Użyj tego w onKey funkcją pyszne on-the-fly seksu bunny z sformatowanych numerów telefonów.

0

Ten site daje dobre 2 klasy, które pomagają w maskowaniu, które uważam za całkiem przydatne.

Musisz użyć pozycji w komentarzach, aby ją poprawić. Warto jednak dodać program do łatwego maskowania widoków EditText dla wielu masek.

1

Najłatwiej wiem użyć maski na EditText w swoich programach w Android Android Studio jest użycie MaskedEditText biblioteki (GitHub link). To rodzaj niestandardowego EditText z Watcherem, który pozwala ustawić podpowiedź o innym kolorze (jeśli chcesz, będzie dostępny nawet, gdy użytkownik już zaczął pisać), maskę i jest bardzo łatwy w użyciu :-)

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

I to jest!

enter image description here

Powiązane problemy