在Android中使用EditText Widget屏蔽input

有没有一种方法可以指定一个input掩码到Android的EditText控件?

我希望能够为### – ## – ####指定一个社会安全号码。 这将导致任何无效input被自动拒绝(例如,我input字母字符而不是数字)。

我意识到我可以添加一个OnKeyListener并手动检查有效性。 但是,这是乏味的,我将不得不处理各种边缘情况。

嗡嗡

Solutions Collecting From Web of "在Android中使用EditText Widget屏蔽input"

尝试使用InputFilter而不是OnKeyListener 。 这意味着您不必担心跟踪单个按键,而且还会处理诸如粘贴到使用OnKeyListener处理会很痛苦的OnKeyListener

您可以看看Android附带的InputFilter实现的来源,为您提供编写自己的开始点。

你可以看看android.telephony.PhoneNumberFormattingTextWatcher类。 它用### – ### – ####模式掩盖了电话号码文本input。

 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函数中使用这个function,用于格式化电话号码的美味即时兔子性爱。

我知道在Android Studio的Android程序的EditText上使用掩码的最简单方法是使用MaskedEditText库( GitHub链接 )。 这是一种带Watcher的自定义EditText,它允许你设置不同颜色的提示(如果你希望在用户已经开始input的时候也可以使用),这个方法非常简单:-)

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

那就是!

在这里输入图像说明

这个网站提供了一个很好的2类,帮助掩蔽,我觉得很有用。

您需要使用评论中的项目来改进它。 但值得添加到您的程序,以方便掩盖许多口罩的EditText视图。

你可以在EditText中使用这个效果

在这里输入图像说明