我创建的类使按钮可以在任何一个字段中输入。我如何修改它,以便仅当用户在两个EditText字段中都输入内容时才启用按钮。
class BtnEnabler(){
constructor(type:EditText, btn:Button):this(){
btn.isEnabled = false
type.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
})
fun EditText.afterTextChanged(afterTextChanged: (String) -> Unit) {
this.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun afterTextChanged(editable: Editable?) {
afterTextChanged.invoke(editable.toString())
}
})
}
type.afterTextChanged {btn.isEnabled = true}
}
}
BtnEnabler(byear, sub_btn)
BtnEnabler(bday, sub_btn)
此外,当用户删除所有输入文本时,是否可以再次禁用按钮?
最佳答案
EditText editText1;
EditText editText2;
Button button;
private void init() {
// TODO: 5/18/2018 consider findViewById first
editText1.addTextChangedListener(textWatcher);
editText2.addTextChangedListener(textWatcher);
}
private String getText(TextView textView) {
return textView.getText().toString().trim();
}
TextWatcher textWatcher = 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) {
button.setEnabled(getText(editText1).length() > 0 && getText(editText2).length() > 0);
}
};
希望您可以将其转换为Kotlin。
关于android - 当两个EditText字段均输入至少一个字符时,启用按钮(Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50416979/