问题
I want to disable by Button if the words in the EditText is less than 3 words, and if the words in the EditText are more than 3 words then I want to enable it so that it can get Clicked.
Can anyone help me here?
回答1:
You have to addTextChangedListener to your EditText
Like this:
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) {
}
});
In that method, you should do like this:
public void enableSubmitIfReady() {
boolean isReady = yourEditText.getText().toString().length() > 3;
yourbutton.setEnabled(isReady);
}
Hope it helps.
回答2:
The problem with using afterTextChanged alone is at application start it can't disable the button initially until you start typing to your EditText.
This is how I implemented mine and it works great. Call this method inside your Activity's onCreate method
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
}
回答3:
You can do what @Udaykiran says but use arg0.length() instead.
The Editable also contains the length of the content of the TextEditor that was changed
回答4:
Most Easy Solution
This is very easy in Data-Binding. You can directly handle button state in XML depending on EditText.
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
Here
&is HTML entity which denotes to&.Here
etName&etPasswordare corresponding ids for name & password EditText.
Sample XML -
<LinearLayout
>
<EditText
android:id="@+id/etName"
/>
<EditText
android:id="@+id/etPassword"
/>
<Button
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
/>
</LinearLayout>
来源:https://stackoverflow.com/questions/8225245/enable-and-disable-button-according-to-the-text-in-edittext-in-android