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();设置可编辑状态 
 
 

你可能感兴趣的:(android小功能讲解)