edittext一些输入控制属性

1.控制EditText最大输入字符数:

方法一:

在 xml 文件中设置文本编辑框属性作字符数限制

如:android:maxLength="10" 即限制最大输入字符个数为10

方法二:

在代码中使用InputFilter 进行过滤

//editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)}); 即限定最大输入字符数为20

方法三:

利用 TextWatcher 进行监听

  1. package cie.textEdit;  
  2.   
  3. import android.text.Editable;  
  4. import android.text.Selection;  
  5. import android.text.TextWatcher;  
  6. import android.widget.EditText;  
  7.   
  8. /* 
  9.  * 监听输入内容是否超出最大长度,并设置光标位置 
  10.  * */  
  11. public class MaxLengthWatcher implements TextWatcher {  
  12.   
  13.     private int maxLen = 0;  
  14.     private EditText editText = null;  
  15.       
  16.       
  17.     public MaxLengthWatcher(int maxLen, EditText editText) {  
  18.         this.maxLen = maxLen;  
  19.         this.editText = editText;  
  20.     }  
  21.   
  22.     public void afterTextChanged(Editable arg0) {  
  23.         // TODO Auto-generated method stub  
  24.           
  25.     }  
  26.   
  27.     public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,  
  28.             int arg3) {  
  29.         // TODO Auto-generated method stub  
  30.           
  31.     }  
  32.   
  33.     public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {  
  34.         // TODO Auto-generated method stub  
  35.         Editable editable = editText.getText();  
  36.         int len = editable.length();  
  37.           
  38.         if(len > maxLen)  
  39.         {  
  40.             int selEndIndex = Selection.getSelectionEnd(editable);  
  41.             String str = editable.toString();  
  42.             //截取新字符串  
  43.             String newStr = str.substring(0,maxLen);  
  44.             editText.setText(newStr);  
  45.             editable = editText.getText();  
  46.               
  47.             //新字符串的长度  
  48.             int newLen = editable.length();  
  49.             //旧光标位置超过字符串长度  
  50.             if(selEndIndex > newLen)  
  51.             {  
  52.                 selEndIndex = editable.length();  
  53.             }  
  54.             //设置新光标所在的位置  
  55.             Selection.setSelection(editable, selEndIndex);  
  56.               
  57.         }  
  58.     }  
  59.   
  60. }  
对应的 activity 部分的调用为:
[java]  view plain  copy
  1. package cie.textEdit;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.text.InputFilter;  
  6. import android.widget.EditText;  
  7.   
  8. public class TextEditActivity extends Activity {  
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {  
  12.         super.onCreate(savedInstanceState);  
  13.         setContentView(R.layout.main);  
  14.   
  15.         EditText editText = (EditText) findViewById(R.id.entry);  
  16.         editText.addTextChangedListener(new MaxLengthWatcher(10, editText));  
  17.   
  18.     }  
  19. }  

2.限定EditText的输入数据类型

方法一:

在布局中设置inputType:

android:inputType="number"

在代码中设置inputType:

Ed_Phone.setInputType(InputType.TYPE_CLASS_PHONE);

int inputType=InputType.TYPE_CLASS_NUMBER|InputType.TYPE_NUMBER_VARIATION_NORMAL;

testEditText.setInputType(inputType);

顺便介绍一下xml的inputtype的值。

Android:inputType=”none”

android:inputType=”text”

android:inputType=”textCapCharacters” 字母大写

android:inputType=”textCapWords” 首字母大写

android:inputType=”textCapSentences” 仅第一个字母大写

android:inputType=”textAutoCorrect” 自动完成

android:inputType=”textAutoComplete” 自动完成

android:inputType=”textMultiLine” 多行输入

android:inputType=”textImeMultiLine” 输入法多行(如果支持)

android:inputType=”textNoSuggestions” 不提示

android:inputType=”textUri” 网址

android:inputType=”textEmailAddress” 电子邮件地址

android:inputType=”textEmailSubject” 邮件主题

android:inputType=”textShortMessage” 短讯

android:inputType=”textLongMessage” 长信息

android:inputType=”textPersonName” 人名

android:inputType=”textPostalAddress” 地址

android:inputType=”textPassword” 密码

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” 时间键盘

方法二:

在xml:EditText 设置属性----
Android:digis="ABCDE555555&&&&&"
ABCDE555555&&&&&"是你的限制规则,//设置只接受某些数字
例如:android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值