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不自动获取焦点

android EditText控件中, 如何判断并且限制只能输入数字?

Android 如何让EditText不自动获取焦点 (转)

Android 带清除功能的输入框控件EditTextWithDel