How to disable Button if EditText is empty ?

2019-01-11 19:53发布

I have an EditText and a Button in my application.

When the button is clicked,the text entered in the EditText is added to a ListView.

I want to disable the Button if the EditText is empty.How to do this ?

This is my code for button click

ImageButton imb=(ImageButton)findViewById(R.id.btn_send);
            imb.setOnClickListener(new OnClickListener()
            {
             @Override
             public void onClick(View arg0) 
             { 
                 EditText et = (EditText)findViewById(R.id.EditText1);

                  String str = et.getText().toString();
                  web1.add(str);
                  Toast.makeText(ShoutSingleProgram.this, "You entered...."+str, Toast.LENGTH_SHORT).show();
                  adapter1.notifyDataSetChanged();
                  et.setText("");

                    }
            });
            }

How can i do this ?

11条回答
倾城 Initia
2楼-- · 2019-01-11 20:15

Initally in onCreate() disable the button. Then add a addTextChangedListenerto the edit text. within that check the edittext length and disable if it is 0 or otherwise enable it

查看更多
做自己的国王
3楼-- · 2019-01-11 20:16

Simple just check the condition in onCreate

if (et.getText().toString().trim().equals("")){
  button.setEnabled(false);
}
else{
button.setEnabled(true);
}
查看更多
聊天终结者
4楼-- · 2019-01-11 20:20

on Oncreate() , before button click you should check the condition as,

   ImageButton imb=(ImageButton)findViewById(R.id.btn_send);
   EditText et = (EditText)findViewById(R.id.EditText1);
   if(et.getText().toString().equals("")
   {
   imb.setEnabled(false);
   }

   imb.setOnClickListener(new OnClickListener()
        {
         @Override
         public void onClick(View arg0) 
         { 
             EditText et = (EditText)findViewById(R.id.EditText1);

              String str = et.getText().toString();
              web1.add(str);
              Toast.makeText(ShoutSingleProgram.this, "You entered...."+str, Toast.LENGTH_SHORT).show();
              adapter1.notifyDataSetChanged();
              et.setText("");

                }
        });
查看更多
爷、活的狠高调
5楼-- · 2019-01-11 20:22

Add a TextWatcher to your EditText, so that when you change the text inside it, you Button enables or disables itself.

查看更多
甜甜的少女心
6楼-- · 2019-01-11 20:27

I used TextUtils for a concise solution:

    editText.addTextChangedListener(new TextWatcher() {
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            button.setEnabled(!TextUtils.isEmpty(s.toString().trim()));
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }

        @Override
        public void afterTextChanged(Editable s) {
        }
    });
查看更多
Anthone
7楼-- · 2019-01-11 20:27

you check the status of an edittext at runtime using the text watcher. the below code counts the text length and disables if the length is zero. use this code:

EditText mEditText = new EditText(this);
    mEditText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,
                int count) {
            // TODO Auto-generated method stub
            if (s.length() == 0) {
                button.setEnabled(false);
            }
                            else {
                            button.setEnabled(true);
                        }
        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {
            // TODO Auto-generated method stub

        }

        @Override
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub

        }
    });
查看更多
登录 后发表回答