如果还是没效果,那就把时间弄大点,比如300ms
软键盘隐藏部分组件的处理 Todohttps://www.jianshu.com/p/89eec61fa699
/** * 软键盘显示 * * @param vIEw */ @RequiresAPI(API = Build.VERSION_CODES.CUPCAKE) public static voID showSoftKeyboard(final VIEw vIEw) { if (vIEw == null) { return; } vIEw.setFocusable(true); vIEw.setFocusableIntouchMode(true); if (!vIEw.isFocused()) { vIEw.requestFocus(); } vIEw.postDelayed(new Runnable() { @OverrIDe public voID run() { inputMethodManager inputMethodManager = (inputMethodManager) vIEw.getContext() .getSystemService(Context.input_METHOD_SERVICE); inputMethodManager.showSoftinput(vIEw, 0); } }, 100); }
/** * 软键盘隐藏 * * @param vIEw */ public static voID hIDeSoftKeyboard(final VIEw vIEw) { if (vIEw == null) { return; } vIEw.postDelayed(new Runnable() { @OverrIDe public voID run() { inputMethodManager manager = (inputMethodManager) vIEw.getContext() .getSystemService(Context.input_METHOD_SERVICE); manager.hIDeSoftinputFromWindow(vIEw.getwindowToken(), inputMethodManager.HIDE_NOT_ALWAYS); } }, 100); }
/** * 选取屏幕高度的2/3来判断 软键盘是否d出 * @param context * @return */public static boolean isSoftShowing(Context context) { // 获取当前屏幕内容的高度 int screenHeight = ((Activity)context).getwindow().getDecorVIEw().getHeight(); // 获取VIEw可见区域的bottom Rect rect = new Rect(); // DecorVIEw即为activity的顶级vIEw if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.CUPCAKE) { ((Activity)context).getwindow().getDecorVIEw().getwindowVisibledisplayFrame(rect); } // 考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度) // 选取screenHeight*2/3进行判断 return screenHeight*2/3 > rect.bottom;}
总结 以上是内存溢出为你收集整理的Android软键盘处理全部内容,希望文章能够帮你解决Android软键盘处理所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)