android EditText控件有没有离开监听事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android EditText控件有没有离开监听事件相关的知识,希望对你有一定的参考价值。
android EditText控件,当用户输完内容后,不输了,离开控件时有没有监听事件?查了资料好像只有下面这三种监听事件:onTextChanged(CharSequence text, int start, int before, int count) beforeTextChanged(CharSequence text, int start, int count,int after)afterTextChanged(Editable edit)
参考技术A EditText.setOnfocusChangedListener(new OnFocusChangedListener(....,boolean focus));boolean值为false时表示点击了别的控件,离开当前editText控件 参考技术B 就是失去焦点事件,设置焦点监听setOnFocusChangeListener(new android.view.View.OnFocusChangeListener() @Override public void onFocusChange(View v, boolean hasFocus) if(hasFocus) // 此处为得 参考技术C 获得焦点:有光标近来onTextChanged:正在输入时的时间失去焦点:就是光标离开了。 参考技术D 我想你可以自己写个类继承它,然后自己想要的监听。RxTextView实现对多个EditText/TextView进行监听(其他控件自行设定逻辑)
当业务比较复杂,需要对多个控件进行监听的时候,比如:
业务一:我们注册的时候(手机号、邮箱、密码、确认密码)
业务二:比如填写某些地址的时候(地址、手机号、验证码、备注等)
如果我们每一个控件都需要一个监听,然后配合这些监听去实现最后的登录/添加按钮的背景变换,那么这个逻辑真的是可以折磨死人的。接下来介绍一个RxTextView(既然使用了RxJava,那么他的特性我们也要利用一下了呀),废话不多说,直接上代码
//创建输入框的监听
Observable<CharSequence> etAmoutMoney = RxTextView.textChanges(mEtAmountMoney);
//创建输入框的监听
Observable<CharSequence> tvAddress = RxTextView.textChanges(mTvAddress);
//使用combineLatest操作符,传入我们创建的那些监听 可以多个
Observable.combineLatest(etAmoutMoney, tvAddress, new Func2<CharSequence, CharSequence, Boolean>()
@Override
public Boolean call(CharSequence charSequence, CharSequence charSequence2)
//在这个地方返回的逻辑就是那些输入框的逻辑
return !TextUtils.isEmpty(mEtAmountMoney.getText().toString().trim()) && !TextUtils.isEmpty(mTvAddress.getText().toString().trim());
).subscribe(new Action1<Boolean>()
@Override
public void call(Boolean aBoolean)
//在这个地方可以实现是否满足过滤逻辑
if (aBoolean)
//如果满足了过滤逻辑 设置可以点击并且设置背景
mTvWithdrawMoney.setBackground(ContextCompat.getDrawable(WithdrawCoinActivity.this, R.drawable.currency_coin_selected_border_bg));
else
//否则就设置背景不可点击
mTvWithdrawMoney.setBackground(ContextCompat.getDrawable(WithdrawCoinActivity.this, R.drawable.currency_coin_unselected_border_bg));
);
以上是关于android EditText控件有没有离开监听事件的主要内容,如果未能解决你的问题,请参考以下文章
Android开发中给EditText控件添加TextWatcher监听实现对输入字数的限制
Android studio怎么给按钮设置监听,并让editText显示文字
android EditText控件中, 如何判断并且限制只能输入数字?