使用Android中的EditText小部件进行屏蔽输入

时间:2010-05-26 11:19:33

标签: android mask android-edittext

有没有办法可以为Android中的EditText控件指定输入掩码?

我希望能够为社会安全号码指定类似### - ## - ####的内容。这将导致任何无效输入被自动拒绝(例如,我输入字母字符而不是数字)。

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

嗡嗡

6 个答案:

答案 0 :(得分:21)

尝试使用InputFilter而不是OnKeyListener。这意味着您不必担心跟踪单个按键操作,并且还会处理诸如粘贴到使用OnKeyListener处理的字段之类的事情。

您可以查看Android附带的source of the InputFilter implementations,为您提供自己编写的起点。

答案 1 :(得分:3)

你可以看看android.telephony.PhoneNumberFormattingTextWatcher类。它使用### - ### - ####模式屏蔽电话号码文本输入。

答案 2 :(得分: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功能中使用此功能,可以使用格式化的电话号码进行美味的动态兔子性爱。

答案 3 :(得分:2)

我知道在Android Studio的Android程序中使用EditText上的模板的最简单方法是使用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

答案 4 :(得分:0)

这个site提供了一个很好的2个类,有助于我发现非常有用的掩蔽。

您需要使用评论中的项目来改进它。但值得添加到您的程序,以便轻松屏蔽许多蒙版的EditText视图。

答案 5 :(得分:0)

您可以在EditText中使用此efect

enter image description here