写了一个KeyBoardUtils工具类,在你需要弹出隐藏键盘的Activity里,只需要KeyBoardUtils.registerKeyBoard(this,ids).第二个参数是EditText等输入内容的控件的id,具体看工具类。
/** * Created by Administrator on 2017/6/9. */ public class KeyBoardUtils { /** * 注意:在清单内加android:windowSoftInputMode="adjustResize"可解决覆盖问题 * 可在activity的dispatchTouchEvent方法,在ACTION.DOWN下调用方法 * @param activity 注册页面 * @param ids 存放EditText等具有焦点控件 */ public static void registerKeyBoard(Activity activity,int[] ids){ if(activity == null){ return; } View v = activity.getCurrentFocus(); if(v == null){ hideInputForce(activity); return; } if(isFocusEditText(v,ids)){ //触摸前焦点在EditText上 hideInputForce(activity); } } /** * 检查焦点view * @param view 获取的焦点 * @param ids 存储EditText等需要输入内容的控件 * @return true 代表ids内存在焦点空间,false ..... */ private static boolean isFocusEditText(View view,int[] ids){ if(view == null){ return false; } for(int id:ids){ if(id == view.getId()){ return true; } } return false; } /** * 隐藏软键盘 * @param activity 在Activity里注册 */ private static void hideInputForce(Activity activity){ if(activity == null || activity.getCurrentFocus() == null){ return; } ((InputMethodManager)activity.getSystemService(INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); } /** * 显示软键盘 * @param context 环境 * @param view 接受软件盘输入的view */ private static void showInput(Context context, View view){ InputMethodManager imm = (InputMethodManager) context.getSystemService(INPUT_METHOD_SERVICE); if(imm != null){ view.requestFocus(); imm.showSoftInput(view,0); } } }