いくつかの編集テキストと 1 つのボタンがあるレイアウトがあります。このボタンは setEnabled(false) です。ユーザーが edittext にテキストを書き込むときに、どうすればステータスを変更できますか? ユーザーがテキストボタンを編集するためにテキストを入力したときに、setEnabled on true にしたいですか?
2108 次
4 に答える
6
使用する必要がありますTextWatcher
:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
}
});
于 2012-10-30T11:49:04.063 に答える
2
ボタンが無効になっている理由もユーザーに通知することをお勧めします。
を使用しTextWatcher
て無効化/有効化ボタンを使用し、EditTextのエラーヒントを設定します。
mEditText.addTextChangedListener(new EmptyValidator());
private class EmptyValidator implements 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 (editable.length() == 0) {
mEditText.setError("Required");
mButton.setEnabled(false);
} else {
mEditText.setError(null);
mButton.setEnabled(true);
}
}
}
于 2012-10-30T11:52:30.360 に答える
1
コードと要件に関しては、以下のコードが正常に機能するはずです。
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void afterTextChanged(Editable string) {
if(string.length() > 0) {
mButton.setEnabled(true);
} else {
mButton.setEnabled(false);
}
}
});
于 2012-10-30T11:53:34.420 に答える
1
edittext の現在の長さを確認する必要があります。また、EditText の最小長が 1 (1) または null でない場合は、TextWatcher から取得する必要があります。それ以外の場合、デフォルトは false です。
チェック状態:
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@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
if(edt.getText().toString().length()<=0)
{
edt.setError("Required.");
btn.setEnable(true);
}
else
{
btn.setEnable(true);
}
}
});
于 2012-10-30T12:01:28.447 に答える