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  };

   显示效果如图所示:

 

 

 

 

posted @ 2013-05-06 22:14  蠢驴  阅读(389)  评论(0)    收藏  举报