2010-05-26 47 views
14

有沒有一種方法可以在Android中爲EditText控件指定輸入屏蔽?使用Android中的EditText Widget屏蔽輸入

我希望能夠指定類似### - ## - ####的社會安全號碼。這將導致任何無效輸入自動被拒絕(例如,我輸入字母字符而不是數字)。

我意識到我可以添加一個OnKeyListener並手動檢查有效性。但這很乏味,我將不得不處理各種邊緣案例。

嗡嗡

+0

我明白是要指定輸入類型,如數字,字符,密碼(型)?在這種情況下,你可以使用setInputType(int type)方法來查看http://developer.android.com/reference/android/text/InputType.html,否則你可以在聲明編輯文本的同時用XML指定 – Vamsi 2010-05-26 13:21:23

+1

看看這些類型。我需要更多的控制輸入文本的格式。 – Buzzy 2010-05-26 13:27:41

回答

18

嘗試使用InputFilter而不是OnKeyListener。這意味着您不必擔心跟蹤單個按鍵,它也會處理諸如粘貼到一個可能會因使用OnKeyListener而感到痛苦的字段。

您可以看看Android附帶的source of the InputFilter implementations,爲您提供編寫自己的起點。

+1

謝謝。 InputFilter源提供了一些很好的見解。 – Buzzy 2010-05-26 13:24:30

+8

鏈接已損壞。 – theblang 2014-09-25 13:36:12

+0

修復了鏈接。 – friederbluemle 2016-04-18 09:14:10

3

你可以看看android.telephony.PhoneNumberFormattingTextWatcher類。它用### - ### - ####模式掩蓋電話號碼文本輸入。

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 

使用此在onKey功能與格式化的電話號碼美味的即時性兔子。

0

site給了一個很好的2類,幫助掩蔽,我發現很有用。

您需要使用評論中的項目來改進它。但值得添加到您的程序,以方便掩蓋許多口罩的EditText視圖。

0

您可以在EditText上

使用 efect

enter image description here

1

我知道使用上的EditText口罩在你的Android程序Android Studio中是使用MaskedEditText庫(GitHub link)最簡單的方法。 這是一種帶Watcher的自定義EditText,它允許您使用不同的顏色設置提示(如果您希望即使用戶已經開始鍵入,也可以使用該提示),並且它非常易於使用:-)

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

就是這樣!

enter image description here