22

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

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

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

嗡嗡声

4

6 回答 6

25

尝试使用 aInputFilter而不是OnKeyListener. 这意味着您不必担心跟踪单个按键,它还将处理诸如粘贴到字段中的事情,而使用OnKeyListener.

您可以查看Android 附带的实现的源代码,InputFilter为您提供编写自己的实现的起点。

于 2010-05-26T11:49:46.853 回答
8

我知道在 Android Studio 的 Android 程序中在 EditText 上使用掩码的最简单方法是使用MaskedEditText库(GitHub 链接)。这是一种带有 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"
    />

那就是!

在此处输入图像描述

于 2017-03-07T10:49:23.390 回答
3

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

于 2010-09-24T11:15:51.073 回答
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功能,通过格式化的电话号码进行美味的即时兔子性爱。

于 2010-12-21T08:16:53.097 回答
0

站点提供了两个很好的类,它们有助于我发现非常有用的掩蔽。

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

于 2014-09-28T23:17:53.513 回答
0

您可以在 EditText中使用此效果

在此处输入图像描述

于 2015-12-29T16:50:49.993 回答