我的布局中有两个EditTexts和一个Button
一个名为UserName的EditText和另一个名为Password的按钮,该按钮名为Login
按钮在开始时被禁用
我想要的是,当在EditText UserName和Password中输入任何内容时,Button应该被启用
这是我试过的
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
{
if(!TextUtils.isEmpty(UserName.getText()) && !TextUtils.isEmpty(PassWord.getText()))
{
Login.setEnabled(true);
return true;
}
return false;
当我运行此代码时,登录按钮启动为禁用 当我在EditTexts中输入内容时它会保持禁用状态 没有点击Enter按钮
它仅在我单击Enter按钮
时有效当点击键盘上的任何按钮并且两个EditTexts都不为空时,有没有办法让它工作
感谢您的帮助
答案 0 :(得分:3)
当文本发生变化时,您可以使用TextChangedListener
类EditTexts
来监听事件。我的一个项目中有一个代码:
private boolean heightFilled;
private boolean weightFilled;
private void setInputListeners() {
etHeight.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
heightFilled = s.length() > 0;
calculateButton.setEnabled(heightFilled && weightFilled);
}
@Override
public void afterTextChanged(Editable s) {
}
});
etWeight.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
weightFilled = s.length() > 0;
calculateButton.setEnabled(heightFilled && weightFilled);
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
如果您更改Button
和EditText
的名称,这应该有用。
答案 1 :(得分:1)
您需要使用textchanged侦听器。如果两者都有一个输入和呼叫代码,你可以在那里检查输入,并在检查后激活你的按钮。
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
//enter code here to check if your edittexts have content
//then do stuff with your button
}
}
});