失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android软键盘工具类

Android软键盘工具类

时间:2019-11-21 16:29:24

相关推荐

Android软键盘工具类

Android软键盘工具类

public class SoftKeyboardUtils {/*** 隐藏或显示软键盘* 如果现在是显示调用后则隐藏 反之则显示*/public static void showORhideSoftKeyboard(Activity activity) {InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);}// 显示软键盘private fun showKeyboard(editText: EditText) {//调用系统输入法editText.postDelayed({val inputManager: InputMethodManager =context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManagerinputManager.showSoftInput(editText, 0)// SoftKeyboardUtils.showSoftKeyboard(this)}, 60)}// 隐藏软键盘private fun hideShowKeyboard(editText: EditText) {val manager = context.getSystemService(INPUT_METHOD_SERVICE) as InputMethodManagermanager.hideSoftInputFromWindow(editText.windowToken, 0)}/*** 判断软键盘是否显示方法*/public static boolean isSoftShowing(Activity activity) {//获取当屏幕内容的高度int screenHeight = activity.getWindow().getDecorView().getHeight();//获取View可见区域的bottomRect rect = new Rect();//DecorView即为activity的顶级viewactivity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);//考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度)//选取screenHeight*2/3进行判断boolean isOpen = screenHeight * 2 / 3 > rect.bottom + getSoftButtonsBarHeight(activity);LegoLog.d("键盘是否显示:" + isOpen);return isOpen;}/*** 底部虚拟按键栏的高度*/@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)private static int getSoftButtonsBarHeight(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();//这个方法获取可能不是真实屏幕的高度activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);int usableHeight = metrics.heightPixels;//获取当前屏幕的真实高度activity.getWindowManager().getDefaultDisplay().getRealMetrics(metrics);int realHeight = metrics.heightPixels;if (realHeight > usableHeight) {return realHeight - usableHeight;} else {return 0;}}}

注意,在Dialogdismiss之前调用该方法。(先关闭软键盘,再关闭弹窗)

如果觉得《Android软键盘工具类》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。