同时监听两个EditText,输入框不为空方可点击(可拓展多个EditText)

1. 概述


我们平时在项目开发中,一定都会有多个输入框需要填写一些验证信息,而我们一般对输入框下边的button按钮处理顶多就是去判断输入框是否为空,如果为空就给提示信息,如果不为空就让执行下一步操作,这篇文章将带给大家一个比较好的处理方式,就是,多个输入框都不为空的时候,就让下边的button颜色变深并且变为可点击,效果图如下:

未输入:
图片.png
输入一个:
图片.png
两个输入框都输入:
图片.png

2. 实现


针对于这种需求,实现起来还是蛮简单的,主要就是两步。
第一:给 "登录" 的button按钮设置drawable,分别设置按下、没有按下、可用、不可用:




    
 
    
    
    


第二:自己定义一个监听器,可用监听多个输入框的监听器,让两个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

你可能感兴趣的:(同时监听两个EditText,输入框不为空方可点击(可拓展多个EditText))