Android开发之EditText 详解三个方法(addTextChangedListener监听用户输入状态)

 

        不多说啦,看看正题:

     

EditText editText = (EditText)findViewById(R.id.monitor_edit_text0);  
    editText.addTextChangedListener(new TextWatcher() {  
          
        @Override  
        public void onTextChanged(CharSequence text, int start, int before, int count) {  
          //text  输入框中改变后的字符串信息   
        //start 输入框中改变后的字符串的起始位置   
        //before 输入框中改变前的字符串的位置 默认为0   
        //count 输入框中改变后的一共输入字符串的数量   
        textView1.setText("输入后字符串 [ " + text.toString() + " ] 起始光标 [ " + start + " ] 输入数量 [ " + count+" ]");  
          
        }  
          
        @Override  
        public void beforeTextChanged(CharSequence text, int start, int count,int after) {  
        //text  输入框中改变前的字符串信息   
        //start 输入框中改变前的字符串的起始位置   
        //count 输入框中改变前后的字符串改变数量一般为0   
        //after 输入框中改变后的字符串与起始位置的偏移量   
        System.out.println(text.toString());  
        textView0.setText("输入前字符串 [ " + text.toString() + " ]起始光标 [ " + start + " ]结束偏移量  [" + after + " ]");  
        }  
          
        @Override  
        public void afterTextChanged(Editable edit) {  
        //edit  输入结束呈现在输入框中的信息   
        textView2.setText("输入结束后的内容为 [" + edit.toString()+" ] 即将显示在屏幕上");  
        }  
    });  

 

 

 

 

再看看我项目中的运用:

 

//add
        etInsureName.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                Log.i("TAG",s.length()+""+"====1===============");
                Log.i("TAG",etInsureName.length()+""+"==1==etInsureName=============");
                //监听输入框的状态,若被保人的文字长度不等于改变后的长度就设置投保人的控件无法点击
                if(etInsureName.length()!=count){
                    etHolderName.setEnabled(false);
                    etHolderPhone.setEnabled(false);//设置不可编辑
                    tvExpectStartTime.setEnabled(false);
                    checkBox.setEnabled(false);
                    etGoodsName.setEnabled(false);
                    etGoodsAmount.setEnabled(false);
                    tvNumberContent.setEnabled(false);
                    etDeparture.setEnabled(false);
                    etDestination.setEnabled(false);
                    etStopovers.setEnabled(false);
                }
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                Log.i("TAG",s.length()+""+"==2===s============");
                Log.i("TAG",etInsureName.length()+""+"==2==etInsureName=============");
                //监听输入框的状态
                if(etInsureName.length()!=s.length()){
                    etHolderName.setEnabled(false);
                }

            }

            @Override
            public void afterTextChanged(Editable s) {
                Log.i("TAG",s.length()+""+"=====3==============");
                Log.i("TAG",etInsureName.length()+""+"==3==etInsureName=============");
            }
        });//add

 

 

 

 

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值