1. 概述
我们平时在项目开发中,一定都会有多个输入框需要填写一些验证信息,而我们一般对输入框下边的button按钮处理顶多就是去判断输入框是否为空,如果为空就给提示信息,如果不为空就让执行下一步操作,这篇文章将带给大家一个比较好的处理方式,就是,多个输入框都不为空的时候,就让下边的button颜色变深并且变为可点击,效果图如下:
未输入:
输入一个:
两个输入框都输入:
2. 实现
针对于这种需求,实现起来还是蛮简单的,主要就是两步。
第一:给 "登录" 的button按钮设置drawable,分别设置按下、没有按下、可用、不可用:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/fx_bg_btn_green_p" android:state_pressed="true"/>
<item android:drawable="@drawable/fx_bg_btn_green_e" android:state_enabled="false"/>
<item android:drawable="@drawable/fx_bg_btn_green_n" android:state_enabled="true"/>
<item android:drawable="@drawable/fx_bg_btn_green_e"/>
</selector>
第二:自己定义一个监听器,可用监听多个输入框的监听器,让两个EditText同时使用,然后在onTextChanged()方法中判断,如果两个输入框输入的长度同时大于0,就给 "登录"按钮setEnable(true),否则设置setEnable(false):
public class MainActivity extends AppCompatActivity {
private EditText et_usertel;
private EditText et_password;
private Button btn_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_usertel = (EditText) findViewById(R.id.et_usertel);
et_password = (EditText) findViewById(R.id.et_password);
btn_login = (Button) findViewById(R.id.btn_login);
// 监听多个输入框
TextChange textChange = new TextChange();
et_usertel.addTextChangedListener(textChange);
et_password.addTextChangedListener(textChange);
// if user changed, clear the password
et_usertel.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// et_password.setText(null);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
// EditText监听器
class TextChange implements TextWatcher {
@Override
public void afterTextChanged(Editable arg0) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void onTextChanged(CharSequence cs, int start, int before,
int count) {
boolean Sign2 = et_usertel.getText().length() > 0;
boolean Sign3 = et_password.getText().length() > 0;
if (Sign2 & Sign3) {
btn_login.setEnabled(true);
}
// 在layout文件中,对Button的text属性应预先设置默认值,否则刚打开程序的时候Button是无显示的
else {
btn_login.setEnabled(false);
}
}
}
}
代码已上传至github:
https://github.com/shuai999/CheckEditInputDemo.git