Я хочу отключить Button, если слова в EditText меньше трех слов, и если слова в EditText содержат более трех слов, я хочу включить его, чтобы он мог получить щелчок.
Может ли кто-нибудь помочь мне здесь?
Я хочу отключить Button, если слова в EditText меньше трех слов, и если слова в EditText содержат более трех слов, я хочу включить его, чтобы он мог получить щелчок.
Может ли кто-нибудь помочь мне здесь?
Вы должны addTextChangedListener
на EditText
Вот так:
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
, которое было изменено
Это очень просто в привязке данных. Вы можете напрямую обрабатывать состояние кнопки в XML в зависимости от EditText.
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
Здесь &
HTML-сущность, которая обозначает &
.
Здесь etName
& etPassword
- соответствующие идентификаторы для имени и пароля EditText.
Образец XML -
<LinearLayout
>
<EditText
android:id="@+id/etName"
/>
<EditText
android:id="@+id/etPassword"
/>
<Button
android:enabled="@{etName.text.length() > 5 && etPassword.text.length() > 5}"
/>
</LinearLayout>