当我们在抱怨环境,抱怨怀才不遇的时候,没有别的原因,一定是自己做的还不够好。
今天遇到了系统键盘乱弹的情况,跳到另一个界面,键盘仍然不消失,在网上找了几种方法都挺好用的,这里记录一下~
软键盘设置失去焦点,在其父控件下,添加如下的属性:
android:focusable="true"
android:focusableInTouchMode="true"
直接关闭输入法键盘:
private void closeInputMethod() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen = imm.isActive();
if (isOpen) {
//第一个参数为需要关闭的Editext
// imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);//没有显示则显示
imm.hideSoftInputFromWindow(mobile_topup_num.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
自动判断输入法当前状态,如输入法已经显示,则隐藏,反之则显示。(可能判断有误,不如直接使用上面强制隐藏的方式)
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
这也是一个强制开启或关闭某Editext软键盘的方法,其中view可为某editext控件
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
强制隐藏当前页面(Activity)的输入法
((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(WidgetSearchActivity.this.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); (WidgetSearchActivity是当前的Activity)
获取当前输入法的状态(打开或者关闭)
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
boolean isOpen=imm.isActive();//isOpen若返回true,则表示输入法打开
Over~