我们都知道当点击EditText的时候,会自动弹出软键盘,但是如何实现点击屏幕其他地方就隐藏它呢? 现在大部分聊天软件,如微信之类的都有这个效果,感觉用户体验很不错,刚好最近有个项目要用到这个,查了些资料,这里也分享下。
先创建个工具类吧。
public class HideSoftKeyboard {
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager)
activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
}
接下来就是看如何调用它类。
我们可以给每个组件都注册一个监听器,然后调用上面的方法,这是可行的,但是万一有很多组件呢?
所以不推荐这个方法。
下面来看个简单的,其实我们只需要找到根布局,然后让根布局自动找到其组件,再递归注册监听器就可以了。
下面看代码:
public void UpdateUI(View view){
if (!(view instanceof EditText)) {
view.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
HideSoftKeyboard.hideSoftKeyboard(MainActivity.this);
return false;
}
});
}
if (view instanceof ViewGroup) {
for(int i = 0; i < ((ViewGroup) view).getChildCount(); i++){
View innerView = ((ViewGroup) view).getChildAt(i);
UpdateUI(innerView);
}
}
}
然后在Activity的oncreate()方法后调用UpdateUI(R.id.layout)(layout是根布局的id)。
这样就ok。喜欢的可以试试,体验真心不错。。