首页 > 系统 > Android > 正文

android软键盘显示与隐藏,及强制隐藏软键盘失效的问题

2019-11-09 18:28:21
字体:
来源:转载
供稿:网友
第一步:在AndroidManifest.xml的文件中声明对应的Activity时加上android:windowSoftInputMode属性,android:windowSoftInputMode="stateAlwaysHidden|adjustResize"第二步:PRivate void hideKeyboard(View view) { InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(view.getWindowToken(), 0);}注意:必须同时实现以上两个操作,否则会隐藏失败另外一种方法是重写触摸事件,在触摸事件中进行处理,如果点击的是EditText就显示键盘,如果是点的其他区域就隐藏键盘,这个方法也要实现上面那个方法的第一步,具体代码如下:@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) { //Finger touch screen event if (ev.getAction() == MotionEvent.ACTION_DOWN) { // get current focus,Generally it is EditText View view = getCurrentFocus(); if (isShouldHideSoftKeyBoard(view, ev)) { hideSoftKeyBoard(view.getWindowToken()); } } return super.dispatchTouchEvent(ev);}private boolean isShouldHideSoftKeyBoard(View view, MotionEvent event) { if (view != null && (view instanceof EditText)) { int[] l = {0, 0}; view.getLocationInWindow(l); int left = l[0], top = l[1], bottom = top + view.getHeight(), right = left + view.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { // If click the EditText event ,ignore it return false; } else { return true; } } // if the focus is EditText,ignore it; return false;}private void hideSoftKeyBoard(IBinder token) { if (token != null) { InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS); }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表