Android监听EditText
是这样一个api
TextWatcher watcher = 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) { } }; etUserName.addTextChangedListener(watcher);
效果如下
主要是理解参数意思
onTextChanged(CharSequence s, int start, int before, int count)
s是这次输入结束后的数组,所以s.length就是最新的长度
before如果你是进行一个输入 before==0
如果你是进行一个删除 before==1
对于批量删除情况 暂时没考虑
代码如下,监听条件为长度都大于9,状态改变
private int allow = 0x1; @Override protected void init() { TextWatcher watcher = 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) { if (s.length() == 9 && before == 0) { allow = allow << 1; if (allow == 0x1 << 2) { btRegister.setBackgroundColor(Color.parseColor("#12b7f5")); btRegister.setTextColor(Color.parseColor("#FFFFFF")); } } else if (s.length() == 8 && before == 1) { allow = allow >> 1; if (allow != 0x1 << 2) { btRegister.setBackgroundColor(Color.parseColor("#e9ebec")); btRegister.setTextColor(Color.parseColor("#c4c4c4")); } } } @Override public void afterTextChanged(Editable s) { } }; etUserName.addTextChangedListener(watcher); etUserPassword.addTextChangedListener(watcher); }