如何限制 EditText 中的输入?

Posted

技术标签:

【中文标题】如何限制 EditText 中的输入?【英文标题】:How can limit input in EditText? 【发布时间】:2012-12-02 07:20:14 【问题描述】:

我有一个EditText。 我只想要输入字符:a->z,A->Z,0->9 and @.#,-,_ 如何在EditText 中限制键盘输入?

【问题讨论】:

在 .xml 的 EditText 字段中,您可以设置“android:inputType=...”来限制输入。查看here 以获取有关各种输入类型的更多信息。但我认为没有适合您的输入类型。所以你必须以编程方式进行并检查每个字符。 【参考方案1】:

试试这个

<EditText 
  android:layout_ 
  android:layout_ 
  android:inputType="text"
  android:digits="0123456789......yourcharcters"/>

【讨论】:

【参考方案2】:

您可以使用此代码片段通过正则表达式对其进行检查:

EditText yourEditText = (EditText)findViewById(R.id.yourEditText );
if( !yourEditText.getText().toString().matches("[a-zA-Z]+") ); // This regex matches only letters
  yourEditText.setError( "Error on text, only a->z,A->Z" );

您可以将此角色添加到事件中...例如单击按钮。

对于您想要的正则表达式,您可以在互联网上找到它,或者尝试编写您的正则表达式并在此站点上对其进行测试: Regexplanet

【讨论】:

【参考方案3】:

我想到的第一个想法是创建一个TextWatcher 并使用正则表达式构造验证用户输入的每个字符。

【讨论】:

【参考方案4】:

你可以试试这个

EditText et = new EditText(this);
int maxLength = 3;
InputFilter[] FilterArray = new InputFilter[1];
FilterArray[0] = new InputFilter.LengthFilter(maxLength);
et.setFilters(FilterArray);

【讨论】:

【参考方案5】:

看看这个:android:inputType

如果您没有找到好的组合,则实现您自己的侦听器并在每次更改时验证文本。

【讨论】:

以上是关于如何限制 EditText 中的输入?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过android中的软键盘以编程方式将我的EditText输入限制为反斜杠(/),tild(〜)等特殊字符

如何限制 EditText 输入只允许 3 位整数或小数

EditText.setError(“错误文本”)不显示弹出窗口

如何更改按钮的边框颜色并更改editText中下划线的颜色?

EditText 限制输入整数和小数 的位数

Android 系统搜索框 如何限制输入字数长度?