-如果是限制英文和数字的可以在资源文件中,为EditText添加digits属性,把可以输入的英文字母和数字添加进去即可,如:
<EditText
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:background="@null"
android:gravity="center|right"
android:id="@+id/apkt_et_idNo"
android:textColor="@color/dark_black"
android:textSize="@dimen/textSize_18"
android:layout_marginStart="@dimen/dp_3"
android:layout_marginEnd="5dp"
android:hint="请输入姓名"
android:digits="@string/letter_and_number"
android:textStyle="bold"
android:typeface="monospace"
/>
letter_and_number的值为26个英文字母大小写以及0-9数字
<string name="letter_and_number">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789</string>
- 但是涉及到中文,汉语博大精深,不可能把所有的汉字都配置进去,通过配置digits这种方式肯定是不适用的。Android 提供了另外一种方式setFilters来限制EditText的输入内容,搭配正则表达式,使用方式如下:
1、组件设置规则定义输入规则InputFilter,00b7对应的是名字分隔符的点,如一些少数民族同胞的名字迪丽热巴·迪力木拉提
InputFilter typeFilter = (source, start, end, dest, dstart, dend) -> {
Pattern p = Pattern.compile("[a-zA-Z\u00b7|\u4e00-\u9fa5]+");
Matcher m = p.matcher(source.toString());
if (!m.matches()) return "";
return null;
};
2、组件设置规则
etIdName.setFilters(new InputFilter[]{typeFilter});
这样配置后,输入其他的符号或者数字,组件内不响应。