图片1
FocusChangeListener,当获得焦点时添加textchangeListener,否则移除;
实现:编写自定义editTextView,重写添加editText相应方法:
@Override
public void addTextChangedListener(TextWatcher watcher)
{
if (mListeners == null)
{
mListeners = new ArrayList<TextWatcher>();
}
mListeners.add(watcher);
super.addTextChangedListener(watcher);
}
@Override
public void removeTextChangedListener(TextWatcher watcher)
{
if (mListeners != null)
{
int i = mListeners.indexOf(watcher);
if (i >= 0)
{
mListeners.remove(i);
}
}
super.removeTextChangedListener(watcher);
}
public void clearTextChangedListeners()
{
if(mListeners != null)
{
for(TextWatcher watcher : mListeners)
{
super.removeTextChangedListener(watcher);
}
mListeners.clear();
mListeners = null;
}
}
为引用的editText添加监听:
mEt_paymoney2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
mEt_paymoney2.addTextChangedListener(new TextWatcher() {....}
//获得焦点才添加监听
}else{
mEt_paymoney2.clearTextChangedListeners();
//失去焦点时清除监听
}}