public class SoftInputUtil { /** * 软键盘显示 * * @param context */ public static void show(Context context) { InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(((AppCompatActivity)context).getCurrentFocus().getWindowToken(), InputMethodManager.RESULT_SHOWN); } /** * 软键盘隐藏 * * @param context */ public static void hidden(Context context) { InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); View view=((AppCompatActivity)context).getCurrentFocus(); if(view!=null){ im.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } public static boolean isShow(Context context){ InputMethodManager imm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE); return imm.isActive();//isOpen若返回true,则表示输入法打开 } /** * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏 * * @param v * @param event * @return */ public static boolean isShouldHideKeyboard(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] l = {0, 0}; v.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // 点击EditText的事件,忽略它。 return false; } else { return true; } } // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点 return false; } /** * 获取InputMethodManager,隐藏软键盘 * * @param token */ public static void hideKeyboard(IBinder token, Context context) { if (token != null) { InputMethodManager im = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); } } }
软键盘显示,软键盘隐藏
猜你喜欢
转载自blog.csdn.net/cxscxs123cxs/article/details/53581311
今日推荐
周排行