根据Android中EditText中的文本启用和禁用Button

如果EditText中的单词少于3个单词,我想按Button禁用,如果EditText中的单词超过3个单词,那么我想启用它以便它可以获得Clicked。

有人能帮我一下吗?

Related of "根据Android中EditText中的文本启用和禁用Button"

您必须将addTextChangedListenerEditText

喜欢这个:

 yourEditText.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { enableSubmitIfReady(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } }); 

在那种方法中,你应该这样做:

  public void enableSubmitIfReady() { boolean isReady = yourEditText.getText().toString().length() > 3; yourbutton.setEnabled(isReady); } 

希望能帮助到你。

单独使用afterTextChanged的问题是在应用程序启动时,它无法在您开始键入EditText之前禁用该按钮。

这就是我实施我的方式而且效果很好。 在Activity的onCreate方法中调用此方法

 void watcher(final EditText message_body,final Button Send) { final TextView txt = (TextView) findViewById(R.id.txtCounter); message_body.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable s) { txt.setText(message_body.length() + " / 160"); //This is my textwatcher to update character left in my EditText if(message_body.length() == 0) Send.setEnabled(false); //disable send button if no text entered else Send.setEnabled(true); //otherwise enable } public void beforeTextChanged(CharSequence s, int start, int count, int after){ } public void onTextChanged(CharSequence s, int start, int before, int count){ } }); if(message_body.length() == 0) Send.setEnabled(false);//disable at app start } 

你可以做@Udaykiran所说的但是使用arg0.length()代替。

Editable还包含已更改的TextEditor内容的长度