android:digits属性
1. 只允许输入数字
android:digits="0123456789"
2.只允许输入数字和英文字母
android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
3. 只允许输入数字,英文字母和@.两个符号
android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@."
使用android:digits属性有几个需要注意的地方。
1. android:digits属性是隐藏的,无法直接在EditText的可视化属性列表中找到。只能直接在XML中配置。当在XML中增加了这项配置后,才可以在EditText的可视化属性列表中找到。
2. android:digits属性中的字符顺序没有影响,例如只允许输入数字时,可以用android:digits="0123456789",也可以用android:digits="9876543210"。
3. android:digits属性中允许有重复字符,有重复字符在使用效果上没有影响。例如android:digits="aaaAAA"和android:digits="aA"效果是一样的。
4. android:digits属性只能设置允许输入哪些字符,不能设置禁止输入哪些字符,也就是说android:digits属性只能设置白名单,不能设置黑名单。
1. 只允许输入数字
android:digits="0123456789"
2.只允许输入数字和英文字母
android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
3. 只允许输入数字,英文字母和@.两个符号
android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@."
使用android:digits属性有几个需要注意的地方。
1. android:digits属性是隐藏的,无法直接在EditText的可视化属性列表中找到。只能直接在XML中配置。当在XML中增加了这项配置后,才可以在EditText的可视化属性列表中找到。
2. android:digits属性中的字符顺序没有影响,例如只允许输入数字时,可以用android:digits="0123456789",也可以用android:digits="9876543210"。
3. android:digits属性中允许有重复字符,有重复字符在使用效果上没有影响。例如android:digits="aaaAAA"和android:digits="aA"效果是一样的。
4. android:digits属性只能设置允许输入哪些字符,不能设置禁止输入哪些字符,也就是说android:digits属性只能设置白名单,不能设置黑名单。
inputType属性
带有中文输入法的手机,通常输入法会有三种类型的软键盘:中文键盘,英文键盘和数字键盘,不同键盘类型之间可以切换。虽然android:digits属性可以让EditText中只允许输入指定类型的字符,但并不能控制软键盘弹出时的类型。例如在设置android:digits只允许输入数字时,可能弹出的软键盘是英文键盘或中文键盘,需要用户点击切换到数字键盘后才可以输入;在设置android:digits只允许输入英文和数字时,可能弹出的软键盘是中文键盘,同样需要用户点击切换到英文键盘和数字键盘后才可以输入。如果能在软键盘显示时就直接跳到对应键盘类型,不需要用户切换就更好了。
EditText提供了一个android:inputType属性来设置输入框的类型。android:inputType可以使用的选项非常多,这里只列出和软键盘显示相关的几个选项。
inputType属性值 含义 number 用来输入数字 textCapCharacters 输入的全部字母大写 textCapWords 输入的每个单词首字母大写 textCapSentences 输入的每个句子首字母大写 textPassword 用来输入密码,所有输入的字符都会变成星号* textVisiblePassword 用来输入密码,输入的字符原样显示 textEmailAddress 用来输入Email地址
当设置android:inputType为number时,输入法开启时会自动切换到数字键盘。当设置为这里的其他几个选项时,输入法开启时会自动切换到英文字母键盘。这里列举上述三种场景下的android:inputType配置。
1. 只允许输入数字
android:inputType="number"。实际上,当inputType设置为number后,EditText中就只能输入数字了,那么android:digits="0123456789"也不用设置了。
如果android:inputType="number"和android:digits同时设置,则实际可以输入的字符以android:digits配置为准。例如android:digits="01234567+-",则可以输入的字符为"01234567+-",这时如果同时设置了android:inputType="number",可以达到自动切换到数字键盘的目的。
2. 只允许输入数字和英文字母
android:inputType="textVisiblePassword"。其他几个选项似乎都不太合适,textCapxxx的会有大小写的约束,textPassword显然只能用在密码输入框中,如果不介意软键盘中多几个符号,textEmailAddress倒也可以用在这里。
3. 只允许输入数字,英文字母和@.两个符号
android:inputType="textEmailAddress"。
带有中文输入法的手机,通常输入法会有三种类型的软键盘:中文键盘,英文键盘和数字键盘,不同键盘类型之间可以切换。虽然android:digits属性可以让EditText中只允许输入指定类型的字符,但并不能控制软键盘弹出时的类型。例如在设置android:digits只允许输入数字时,可能弹出的软键盘是英文键盘或中文键盘,需要用户点击切换到数字键盘后才可以输入;在设置android:digits只允许输入英文和数字时,可能弹出的软键盘是中文键盘,同样需要用户点击切换到英文键盘和数字键盘后才可以输入。如果能在软键盘显示时就直接跳到对应键盘类型,不需要用户切换就更好了。
EditText提供了一个android:inputType属性来设置输入框的类型。android:inputType可以使用的选项非常多,这里只列出和软键盘显示相关的几个选项。
inputType属性值 | 含义 |
---|---|
number | 用来输入数字 |
textCapCharacters | 输入的全部字母大写 |
textCapWords | 输入的每个单词首字母大写 |
textCapSentences | 输入的每个句子首字母大写 |
textPassword | 用来输入密码,所有输入的字符都会变成星号* |
textVisiblePassword | 用来输入密码,输入的字符原样显示 |
textEmailAddress | 用来输入Email地址 |
当设置android:inputType为number时,输入法开启时会自动切换到数字键盘。当设置为这里的其他几个选项时,输入法开启时会自动切换到英文字母键盘。这里列举上述三种场景下的android:inputType配置。
1. 只允许输入数字
android:inputType="number"。实际上,当inputType设置为number后,EditText中就只能输入数字了,那么android:digits="0123456789"也不用设置了。
如果android:inputType="number"和android:digits同时设置,则实际可以输入的字符以android:digits配置为准。例如android:digits="01234567+-",则可以输入的字符为"01234567+-",这时如果同时设置了android:inputType="number",可以达到自动切换到数字键盘的目的。
2. 只允许输入数字和英文字母
android:inputType="textVisiblePassword"。其他几个选项似乎都不太合适,textCapxxx的会有大小写的约束,textPassword显然只能用在密码输入框中,如果不介意软键盘中多几个符号,textEmailAddress倒也可以用在这里。
3. 只允许输入数字,英文字母和@.两个符号
android:inputType="textEmailAddress"。