Edittext失去焦点

       大家都知道防止打开带有edittext的activity弹出软键盘的方法就是在edittext的父控件中加上获取焦点事件
   android:focusable="true"  
   android:focusableInTouchMode="true" 

     但是小猿的程序中有多个edittext,每个失去焦点的时候都要执行失去焦点事件判断一下输入内容的正确性,在点击按钮进下个界面的时候总有一个没有执行失去焦点事件,于是小猿到尝试了许多方式未果(网上很多点击屏幕edittext失去焦点的文章),后来终于研究出来了,下边说以下我用的方法:
    view.setFocusable(true);
    view.setFocusableInTouchMode(true);
    view.requestFocus();
(view表示包含edittext的父控件,这样父控件抢走了焦点edittext就执行失去焦点事件了,并且可以再次点击edittext的时候获得焦点)


    有人说可以在事件里加这两句话就可以:
         InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
         imm.hideSoftInputFromWindow(searchText.getWindowToken(), 0); 
小猿试了试,好像只是隐藏了软件盘,失去焦点事件并未执行(不知道是不是自己的原因)。

    还有一种方式让设置edittext为不可编辑状态(setFocusable(false))失去焦点事件的却执行但是再设置为可编辑状态的时候(setFocusable(true))仍然无法获得焦点,不知道为什么。下面的方式到是可以设置:

使用editText.setFocusable(false);和editText.setFocusableInTouchMode(false);设置不可编辑状态;editText.setFocusableInTouchMode(true);editText.setFocusable(true);editText.requestFocus();设置可编辑状态


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值