代码之家  ›  专栏  ›  技术社区  ›  Buzzy

在Android中使用EditText小部件屏蔽输入

  •  18
  • Buzzy  · 技术社区  · 14 年前

    有没有一种方法可以在Android中指定EditText控件的输入掩码?

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

    我意识到我可以添加onkeyListener并手动检查有效性。但这很无聊,我得处理各种边缘案件。

    嗡嗡声

    6 回复  |  直到 7 年前
        1
  •  21
  •   Adam Peck    8 年前

    尝试使用 InputFilter 而不是 OnKeyListener . 这意味着您不必担心跟踪单个按键,它还将处理像粘贴到字段中这样的事情,这对于处理 监听者 .

    你可以看看 source of the InputFilter implementations 安卓系统为你提供了自己写作的起点。

        2
  •  3
  •   Fernando Pereira    14 年前

    您可以查看android.telephony.phoneNumberFormattingTextWatcher类。它用模式屏蔽输入的电话号码文本。

        3
  •  2
  •   sth Wojciech Parzych    12 年前
    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 功能为美味的飞行兔子性与格式化的电话号码。

        4
  •  2
  •   Slava    7 年前

    我知道在Android Studio的Android程序中在EditText上使用掩码的最简单方法是使用 maskedEditText library( github link )。 它是一种带有Watcher的自定义EditText,允许您设置不同颜色的提示(如果需要,即使在用户已经开始键入时也可以使用),并且非常容易使用。

    编译'ru.egslava:maskedEditText:1.0.5'
    
    <br.com.sapereaude.maskedEditText.maskedEditText
    android:id=“@+id/手机输入”
    android:layout_width=“匹配父级”
    android:layout_height=“包装内容”
    android:inputType=“电话”
    android:typeface=“单空间”
    mask:allowed_chars=“1234567”
    mask:mask=“--”
    app:keep_hint=“真”
    /gt;
    < /代码> 
    
    

    那就是!

    ) 它是一种带有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

        5
  •  0
  •   SatanEnglish    10 年前

    这个 site 给出了一个很好的2个类来帮助掩盖我发现非常有用的东西。

    您需要使用注释中的项目来改进它。但是值得添加到您的程序中,以便为许多遮罩隐藏EditText视图。

        6
  •  0
  •   Community Egal    7 年前

    您可以在edittext中使用此 efect

    enter image description here