addTextChangedListener和TextWatcher实现微信编辑框的输入监听效果
2014-12-06 15:56
411 查看
最近在做一个仿照微信的UI设计,其中微信的输入框监听效果挺人性化的,倘若编辑框里面没有内容,登录按钮就不高亮,并且不让你登录。所以在网上找一下实现的方法,最后发现了有addTextChangedListener 这么一个东东。最后实现效果还是不错滴( ^_^ )。废话不多说,进入正文。
addTextChangedListener内部定义了三个方法:分别是
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) { }
//输入前监听编辑框的情况
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
//输入过程中监听编辑框的情况
@Override
public void afterTextChanged(CharSequence s, int start, int count,int after) { }
//输入接受后监听编辑框的情况
其中的CharSequence s参数表示的是编辑框的内容,int start表示的是未输入时编辑框的文字长度,int before表示的是输入后文本的长度。
其中的onTextChanged方法不太了解其用法,但onTextChange方法则可以在输入过程中监听用户的输入,如果用户输入不应该出现的字符,你就可以在这个输入过程中检验输入的合法性,并给与提示。而afterTextChange方法则监听输入结束后的文本情况。
在这里我们则用afterTextChange监听输入后的情况,检验编辑框的字符是否为空。但是微信上面有两个输入框,分别是用户名和密码。所以在需要在编辑框里面监听本编辑框不为空的同时检验另一个编辑框的字符不为空,才能让按钮高亮。粗略的设计了一下,基本实现了功能。
phone_account.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
@Override
public 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() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
@Override
public 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);}
}
addTextChangedListener内部定义了三个方法:分别是
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) { }
//输入前监听编辑框的情况
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
//输入过程中监听编辑框的情况
@Override
public 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() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
@Override
public 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() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) { }
@Override
public 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);}
}
相关文章推荐
- 使用EditText的addTextChangedListener(TextWatcher watcher)方法对EditText实现监听
- Android editText.addTextChangedListener实现还有多少文字可以输入
- addTextChangedListener(文本监听)参数解释及实现EditText字数监听
- Android开发之EditText 详解(addTextChangedListener监听用户输入状态)
- Android开发之EditText 详解(addTextChangedListener监听用户输入状态)
- Android开发之EditText 详解三个方法(addTextChangedListener监听用户输入状态)
- Android addTextChangedListener(文本监听)参数解释及实现EditText字数监听
- android 输入框 实时计算剩余的输入字符数(addTextChangedListener)
- 关于EditText的文本改变监听addTextChangedListener的问题
- 解决Android的EditText的addTextChangedListener监听的死循环问题
- addTextChangedListener(TextWatcher watcher)
- ListView 里面的EditText 添加监听addTextChangedListener的时候传递当前的position的方法
- android 输入框 实时计算剩余的输入字符数(addTextChangedListener)
- 使用EditText的addTextChangedListener(new TextWatcher())方法
- 使用EditText的addTextChangedListener(new TextWatcher())方法
- 使用EditText的addTextChangedListener(new TextWatcher())方法
- android之EditText文本监听(addTextChangedListener)
- EasyDemo*事件监听之EditText~addTextChangedListener(on Github)
- addTextChangedListener(new TextWatcher()){}
- Android,EditText监听其中文字变化addTextChangedListener