软键盘弹出显示或隐藏工具类

来源:互联网 发布:r语言读取大数据csv 编辑:程序博客网 时间:2024/05/17 06:32

写了一个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);        }    }}


原创粉丝点击