Android中对EditText的监听TextWatcher
Android中对EditText的监听TextWatcher
2013-05-06 22:15:07
最近在做项目的过程中遇到了需要对EditText进行监听的情况,这让我对TextView做了一点点了解。情况如下:
1、为EditText设定TextWatcher监听:
1 TelephoneEdit.addTextChangedListener(NameEditWatcher); 2 3 TextWatcher NameEditWatcher = new TextWatcher(){ 4 @Override 5 public void beforeTextChanged(CharSequence s, int start, int count, 6 int after) { 7 // TODO Auto-generated method stub 8 } 9 @Override 10 public void onTextChanged(CharSequence s, int start, int before, 11 int count) { 12 // TODO Auto-generated method stub 13 } 14 @Override 15 public void afterTextChanged(Editable s) { 16 } 17 18 };
2、限定数字输入的TextWatcher监听:
1 TextWatcher NameEditWatcher = new TextWatcher(){ 2 private CharSequence temp ; 3 private int startEdit ; 4 private int endEdit ; 5 6 7 @Override 8 public void beforeTextChanged(CharSequence s, int start, int count, 9 int after) { 10 // TODO Auto-generated method stub 11 temp = s ; 12 13 } 14 @Override 15 public void onTextChanged(CharSequence s, int start, int before, 16 int count) { 17 // TODO Auto-generated method stub 18 int num = temp.length() ; 19 TelephoneText.setText(num+"/11") ; 20 21 } 22 @Override 23 public void afterTextChanged(Editable s) {//输入电话号码是,最多为11位 24 // TODO Auto-generated method stub 25 startEdit = TelephoneEdit.getSelectionStart() ; 26 endEdit = TelephoneEdit.getSelectionEnd() ; 27 if(temp.length()>11){ 28 Toast.makeText(MainActivity.this, "你输入的字数已经超过了限制!", Toast.LENGTH_SHORT).show(); 29 s.delete(startEdit-1,endEdit) ;//该句的作用是将输入的第12个数字删除 30 TelephoneEdit.setText(s) ; 31 TelephoneText.setTextColor(Color.rgb(255,0,0)) ; //rgb(int red,int green,int blue) 32 ------>当输入的数字超过11位时,变为红色 33 }else{ 34 if(temp.length() == 11){ 35 TelephoneText.setTextColor(Color.rgb(255,0,0)) ; 36 }else{ 37 TelephoneText.setTextColor(Color.rgb(0,0,0)) ; //当不足11位时为系统默认色 38 } 39 } 40 } 41 42 };
显示效果如图所示:


浙公网安备 33010602011771号