【问题标题】:Change button color all edittext fields filled?更改按钮颜色填充的所有edittext字段?
【发布时间】:2017-11-14 08:40:42
【问题描述】:

我的布局文件中有如下按钮和文本字段

<EditText
        android:id="@+id/et_password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView4"
        android:layout_centerHorizontal="true"
        android:ems="10"
        android:inputType="textPassword" />

    <Button
        android:id="@+id/btn_app_signup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/et_password"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="63dp"
        android:background="@drawable/button"
        android:text="SIGN UP"
        android:textColor="@color/white" />

如果所有编辑文本字段都填充了我的 Activity 类,我如何将这个背景更改为@drawable/button_success,如下所示

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_signup);
        btn_app_signup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String name = et_name.getText().toString();
                String email = et_email.getText().toString();
                String password = et_password.getText().toString();

                registerAccount(name, email, password);
            }
        });
    }

    private void registerAccount(String name, String email, String password) {

        if(TextUtils.isEmpty(name) || TextUtils.isEmpty(email) || TextUtils.isEmpty(password)) {
            Toast.makeText(SignupActivity.this, "All fields required", Toast.LENGTH_LONG).show();
        }
        else {

            //save data in datbase
        }
    }

如果我填写所有编辑文本字段,我该怎么做?填写更改按钮按钮背景

【问题讨论】:

    标签: android button


    【解决方案1】:

    试试这个

    private void registerAccount(String name, String email, String password) {    
    
            if(!TextUtils.isEmpty(name)&& !TextUtils.isEmpty(email) && !TextUtils.isEmpty(password)){
    
               btn_app_signup.setBackground(ContextCompat.getDrawable(this,R.drawable.ic_android_black_24dp));// set here your backgournd to button
              // save data in database
    
            }else {
                Toast.makeText(this, "All fields required", Toast.LENGTH_LONG).show();
            }
    
    
        }
    

    编辑

     et_password.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
                if (!TextUtils.isEmpty(et_name.getText().toString()) && !TextUtils.isEmpty(et_email.getText().toString()) && !TextUtils.isEmpty(et_password.getText().toString())) {
                    btn_app_signup.setBackground(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_android_black_24dp));// set here your backgournd to button
                }else {
                    btn_app_signup.setBackgroundResource(android.R.drawable.btn_default);
                }
            }
        });
        et_email.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
                if (!TextUtils.isEmpty(et_name.getText().toString()) && !TextUtils.isEmpty(et_email.getText().toString()) && !TextUtils.isEmpty(et_password.getText().toString())) {
                    btn_app_signup.setBackground(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_android_black_24dp));// set here your backgournd to button
                }else {
                    btn_app_signup.setBackgroundResource(android.R.drawable.btn_default);
                }
            }
        });
        et_name.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
            }
    
            @Override
            public void afterTextChanged(Editable editable) {
                if (!TextUtils.isEmpty(et_name.getText().toString()) && !TextUtils.isEmpty(et_email.getText().toString()) && !TextUtils.isEmpty(et_password.getText().toString())) {
                    btn_app_signup.setBackground(ContextCompat.getDrawable(MainActivity.this, R.drawable.ic_android_black_24dp));// set here your backgournd to button
                }else {
                    btn_app_signup.setBackgroundResource(android.R.drawable.btn_default);
                }
            }
        });
    

    【讨论】:

    • 如果我在这个方法中使用它只会使用我按下按钮
    • 当你想改变按钮背景时你能解释更多吗@HemalHerath
    • 所有编辑文本字段填满,我想改变背景
    • 是的,就像 html 中的那样,它就像 onchange 方法
    • 有没有办法一次检查所有字段
    【解决方案2】:
    et_name.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){
        String name=et_name.getText().toString();
        String email=et_email.getText().toString();
        String password=et_password.getText().toString();
    
        valiadte(name,email,password);
        }
    
        @Override
        public void afterTextChanged(Editable s){
    
        }
        });
    
        et_email.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){
        String name=et_name.getText().toString();
        String email=et_email.getText().toString();
        String password=et_password.getText().toString();
    
        valiadte(name,email,password);
        }
    
        @Override
        public void afterTextChanged(Editable s){
    
        }
        });
        et_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){
        String name=et_name.getText().toString();
        String email=et_email.getText().toString();
        String password=et_password.getText().toString();
    
        valiadte(name,email,password);
        }
    
        @Override
        public void afterTextChanged(Editable s){
    
        }
        });
    

    并且使函数失效

     private void valiadte(String name,String email,String password){ 
                  if(!TextUtils.isEmpty(name)&&!TextUtils.isEmpty(email)&&!TextUtils.isEmpty(password){
                   btn_app_signup.setBackground(ContextCompat.getDrawable(this,R.drawable.ic_android_black_24dp));
                   // set here your backgournd to button     
      } 
    
     }
    

    【讨论】:

      【解决方案3】:

      您可以像这样使用drawable 简单地更改背景:

      btn_app_signup.setBackground(getResources().getDrawable(R.dr‌​awable.button_succes‌​s));
      

      当你检查你的文本时:

      if(et_name.getText().toString().equals("") || et_email.getText().toString().equals("") || et_password.getText().toString().equals("")) {
          Toast.makeText(SignupActivity.this, "All fields required", Toast.LENGTH_LONG).show();
      }
      

      希望对你有帮助。

      【讨论】:

      • 如何检查所有字段是否已填写
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-24
      • 1970-01-01
      相关资源
      最近更新 更多