addTextChangedListener和TextWatcher实现微信编辑框的输入监听效果

来源:互联网 发布:linux查看用户登录日志 编辑:程序博客网 时间:2024/05/22 17:31

     最近在做一个仿照微信的UI设计,其中微信的输入框监听效果挺人性化的,倘若编辑框里面没有内容,登录按钮就不高亮,并且不让你登录。所以在网上找一下实现的方法,最后发现了有addTextChangedListener 这么一个东东。最后实现效果还是不错滴( ^_^ )。废话不多说,进入正文。

   

      addTextChangedListener内部定义了三个方法:分别是

     

                                               @Override                                                    public void beforeTextChanged(CharSequence s, int start, int count,int after) { }//输入前监听编辑框的情况                        @Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {     }//输入过程中监听编辑框的情况                        @Overridepublic void afterTextChanged(CharSequence s, int start, int count,int after) { }                        //输入接受后监听编辑框的情况

</pre><pre class="java" name="code">

 

        其中的CharSequence s参数表示的是编辑框的内容,int start表示的是未输入时编辑框的文字长度,int before表示的是输入后文本的长度。

        其中的onTextChanged方法不太了解其用法,但onTextChange方法则可以在输入过程中监听用户的输入,如果用户输入不应该出现的字符,你就可以在这个输入过程中检验输入的合法性,并给与提示。而afterTextChange方法则监听输入结束后的文本情况。

        在这里我们则用afterTextChange监听输入后的情况,检验编辑框的字符是否为空。但是微信上面有两个输入框,分别是用户名和密码。所以在需要在编辑框里面监听本编辑框不为空的同时检验另一个编辑框的字符不为空,才能让按钮高亮。粗略的设计了一下,基本实现了功能。
 

 

phone_account.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {     }@Overridepublic void afterTextChanged(Editable s) {if(s.length()!=0){clean_account.setImageResource(R.drawable.editview_clean);if(phone_password.getText().toString().equals("")){login.setBackgroundResource(R.drawable.button_green_useless);}else{login.setBackgroundResource(R.drawable.button_green);}                  }else{clean_account.setImageResource(R.drawable.touming);login.setBackgroundResource(R.drawable.button_green_useless);}}});                phone_account.setOnFocusChangeListener(new OnFocusChangeListener() {        @Override        public void onFocusChange(View v, boolean hasFocus) {         // TODO Auto-generated method stub         if (hasFocus) {         if(phone_account.getText().toString().equals("")){}else{         clean_account.setImageResource(R.drawable.editview_clean);         }             phone.setBackgroundResource(R.drawable.editview_bord_onfocus);             clean_password.setImageResource(R.drawable.touming);                        }else {          phone.setBackgroundResource(R.drawable.editview_bord_unfocus);}                                 }                                      });        phone_password.addTextChangedListener(new TextWatcher() {@Overridepublic void beforeTextChanged(CharSequence s, int start, int count,int after) {}@Overridepublic void onTextChanged(CharSequence s, int start, int before,int count) {     }@Overridepublic void afterTextChanged(Editable s) {if(s.length()!=0){clean_password.setImageResource(R.drawable.editview_clean);if(phone_account.getText().toString().equals("")){login.setBackgroundResource(R.drawable.button_green_useless);}else{login.setBackgroundResource(R.drawable.button_green);}                  }else{clean_password.setImageResource(R.drawable.touming);login.setBackgroundResource(R.drawable.button_green_useless);}}});                phone_password.setOnFocusChangeListener(new OnFocusChangeListener() {        @Override        public void onFocusChange(View v, boolean hasFocus) {         // TODO Auto-generated method stub         if (hasFocus) {         if(phone_password.getText().toString().equals("")){}else{             clean_password.setImageResource(R.drawable.editview_clean);             }             password.setBackgroundResource(R.drawable.editview_bord_onfocus);             clean_account.setImageResource(R.drawable.touming);                        }else {          password.setBackgroundResource(R.drawable.editview_bord_unfocus);}                                 } 



 

 

0 0
原创粉丝点击