android edittext怎样禁止edittext屏蔽特殊字符符

[android]EditText inputType 特殊情况得只有数字和特殊符号
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.
这里是我的方案,
我只是想要只数目和特定的特殊字符,像元在 EditText 字段的结尾。
前: 234.34 元
我不想在此输入后验证,但宁可用户只能输入十进制数和在结束了这个特殊的字符。
一些人请帮我来做这个。
解决方法 1:
您可以使用以下 (progromatically)
ed.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);
ed.setKeyListener(DigitsKeyListener.getInstance(".$"));
您可以定义您想要在范围内的所有字符,DigitsKeyListener.getInstance
或者如果不想让用户输入一个 $ 符号和您想要在用户完成编辑后手动输入......
protected OnFocusChangeListener getOnFocusChangeListener() {
return new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
//Member variable in the class which contains an EditText
CurrencyTextbox.this.hadFocus =
// Thes EditText has lost focus
Log.v(TAG, "Lost focus.");
if (CurrencyTextbox.this.hadFocus) {
// We previously had focus, now we lost it, format the user input!
// Get current value of the Textbox
String value = CurrencyTextbox.this.textbox.getText().toString();
// Formatting the user input
value = String.format(//Doing some formatting);
// Reset the had focus
CurrencyTextbox.this.hadFocus =Android编程EditText禁止输入空格和特殊字符例子分享 - 维维软件园
Android编程EditText禁止输入空格和特殊字符例子分享
来源:维维整理作者:维维时间: 20:52:04(0)
今天要给大家分享的是Android编程EditText禁止输入空格和特殊字符例子,有一定的参考价值,有兴趣的朋友快来详细了解一下吧。
有时咱们需要限制EditText输入的字符类型,比如空格,特殊字符等,这时我们可以使用系统提供的输入过滤器&InputFilter。具体实现代码如下:
& * 禁止EditText输入空格
& * @param editText
&public static void setEditTextInhibitInputSpace(EditText editText){
& InputFilter filter=new InputFilter() {
&& @Override
&& public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
&&& if(source.equals(& &)return &&;
& editText.setFilters(new InputFilter[]{filter});
& * 禁止EditText输入特殊字符
& * @param editText
&public static void setEditTextInhibitInputSpeChat(EditText editText){
& InputFilter filter=new InputFilter() {
&& @Override
&& public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
&&& String speChat=&[`~!@#$%^&*()+=|{}':;',\\[\\].&&/?~!@#¥%&&&*()&&+|{}【】&;:&&'。,、?]&;
&&& Pattern pattern = pile(speChat);
&&& Matcher matcher = pattern.matcher(source.toString());
&&& if(matcher.find())return &&;
& editText.setFilters(new InputFilter[]{filter});
大家还看了:
[访问统计:]上一篇:下一篇:Android EditText实现字符过滤 - 简书
Android EditText实现字符过滤
EditText文本输入控件,在App开发中可能会遇到各种各样的要求,如只能输入数字、限定长度、不允许输入特殊字符等要求,这时候我们就要实现EditText的过滤功能,达到产品的要求。
(一)简单的过滤
EditText已经提供了一些过滤输入的属性1、通过inputType限定android:inputType="textCapCharacters"//前3个输入普通字符android:inputType="textCapWords"//单词首字母大小android:inputType="textCapSentences"//仅第一个字母大写android:inputType="textAutoCorrect"//前两个自动完成android:inputType="textAutoComplete"//前两个自动完成android:inputType="textMultiLine"//多行输入android:inputType="textImeMultiLine"//输入法多行(不一定支持)android:inputType="textNoSuggestions"//不提示android:inputType="textUri"//URI格式android:inputType="textEmailAddress"//电子邮件地址格式android:inputType="textEmailSubject"//邮件主题格式android:inputType="textShortMessage"//短消息格式android:inputType="textLongMessage"//长消息格式android:inputType="textPersonName"//人名格式android:inputType="textPostalAddress"//邮政格式android:inputType="textPassword"//密码格式android:inputType="numberPassword"//数字密码格式android:inputType="textVisiblePassword"//密码可见格式android:inputType="textWebEditText"//作为网页表单的文本格式android:inputType="textFilter"//文本筛选格式android:inputType="textPhonetic"//拼音输入格式android:inputType="number"//数字格式android:inputType="numberSigned"//有符号数字格式android:inputType="numberDecimal"//可以带小数点的浮点格式android:inputType="phone"//拨号键盘android:inputType="datetime"//日期时间键盘android:inputType="date"//日期键盘android:inputType="time"//时间键盘
我们常用的有phone,number,numberSigned,numberDecimal等限定输入数字和textpassword,numberPassword格式.除了inputType属性还有一个numeric属性(现在不推荐实用了,因为inputType已经包含了)android:numeric="integer"android:numeric="signed"android:numeric="decimal"对应inputType的number,numberSigned,numberDecimal。
2、通过单个属性//为true限制输入电话号码android:phoneNumber=”true”//为true限制输入电话号码android:phoneNumber=”true”//为true限制输入密码android:password="true"
(二)使用digits属性过滤
在很多情况下我们要要满足产品复杂的需求,上面的属性可能满足不了我们。比如产品要求密码只能输入数字、字母和下划线的时候,我们就必须使用其他属性来限定了。Android给出了digits属性来满足我们的需要,digits内容为你只能输入的字符,其他字符无法输入。如上面的需求,digits内的内容为:
android:id="@+id/editText"
android:inputType="textPassword"
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_"
android:layout_width="match_parent"
android:layout_height="wrap_content"/&
密码格式且输入必须是digits内限定的字符。通过digits属性可以根据产品需求限定输入字符。
(三)在代码中限定输入字符
xml中我们可以使用digits属性可以实现字符的限定,代码中EditText提供了setKeyListener(KeyListener )和setFilters(InputFilter[])两个方法。
1、setFilterssetFilters接收的参数是一个InputFilter类型的数组,是对输入的文字进行过滤。如限制输入输入字数为16
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(16)});
只能输入16位大写字母
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps(),new InputFilter.LengthFilter(16)});
如限制只能输入a-z的小写字母,和输入字数为16。
editText.setFilters(new InputFilter[]{codeInputFilter,new InputFilter.LengthFilter(16)});
实现InputFilter过滤器,需要覆盖一个叫filter的方法,
public abstract CharSequence filter (
CharSequence source,
//输入的文字
int start,
//开始位置
//结束位置
Spanned dest, //当前显示的内容
int dstart,
//当前开始位置
int dend //当前结束位置
我们实现一个输入小写转大写的filter,且不超过16位
InputFilter switchFilter = new InputFilter() {
public CharSequence filter(CharSequence source, int start, int end,
Spanned dest, int dstart, int dend) {
return source.toString().toUpperCase();
editText.setFilters(new InputFilter[]{switchFilter,new InputFilter.LengthFilter(16)});
2、setKeyListenerInputFilter提供了字符过滤,KeyListener提供了对输入键盘按键的监听。
DigitsKeyListener、NumberKeyListener是我们经常使用的,DigitsKeyListener继承了NumberKeyListener,NumberKeyListener实现了InputFilter,所以我们在使用InputFilter的时候发现也可以设置DigitsKeyListener和NumberKeyListener。
//只接受整数输入
KeyListener l = new DigitsKeyListener(fasle,false);
//接受有符号整数输入
KeyListener l = new DigitsKeyListener(true,false);
//接受小数,整数输入
KeyListener l = new DigitsKeyListener(false,true);
//接受有符号整数/小数输入
KeyListener l = new DigitsKeyListener(true,true);
editText.setKeyListener(l);
DigitsKeyListener是对数字输入的限制,NumberKeyListener则是对字符输入的限制,刚开始用差点搞反。
//字符过滤功能
NumberKeyListener myKeyListener = new NumberKeyListener() {
public int getInputType()
//指定键盘类型
return InputType.TYPE_CLASS_TEXT;
protected char[] getAcceptedChars()
//指定你所接受的字符
return getString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_-").toCharArray();
NumberKeyListener类似于digits的使用,到这里字符过滤功能介绍完毕。
丁军伟Dev(或者搜索DingAndroid)
Android程序员自定义控件(11)
android(69)
有时咱们需要限制EditText输入的字符类型,比如空格,特殊字符等,这时我们可以使用系统提供的输入过滤器—InputFilter。具体实现代码如下:
& * 禁止EditText输入空格
& * @param editText
&public static void setEditTextInhibitInputSpace(EditText editText){
& InputFilter filter=new InputFilter() {
&& @Override
&& public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
&&& if(source.equals(& &)return &&;
& editText.setFilters(new InputFilter[]{filter});
& * 禁止EditText输入特殊字符
& * @param editText
&public static void setEditTextInhibitInputSpeChat(EditText editText){
& InputFilter filter=new InputFilter() {
&& @Override
&& public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
&&& String speChat=&[`~!@#$%^&*()+=|{}':;',[].&&/?~!@#¥%……&*()——+|{}【】‘;:”“'。,、?]&;
&&& Pattern pattern = pile(speChat);
&&& Matcher matcher = pattern.matcher(source.toString());
&&& if(matcher.find())return &&;
& editText.setFilters(new InputFilter[]{filter});
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:101038次
积分:3185
积分:3185
排名:第11374名
原创:226篇
评论:42条
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'

我要回帖

更多关于 android edittext属性 的文章

 

随机推荐