关于软键盘的弹出与退出,本文将分一下几种情况做出相应讲解:
首先定义一个软键盘管理器:InputMethodManager inputManager;
初始化:inputManager= (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
1.如果想让Activity已开始运行时不弹出软键盘,可在AndroidManifest.xml文件中做如下设置:
android:windowSoftInputMode="adjustPan|stateHidden"
如果要想自动弹出可在相应的Activity声明中做如下设置:
android:windowSoftInputMode="adjustPan|stateVisible"
2.ActionBar中导航键返回上级Activity
finish();
if(inputManager.isActive()&&getCurrentFocus()!=null){
if (getCurrentFocus().getWindowToken()!=null) {
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
3.为了提供更好的用户体验,点击输入框以外的地方关闭软键盘
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (NewContacts.this.getCurrentFocus() != null) {
if (NewContacts.this.getCurrentFocus().getWindowToken() != null) {
inputManager.hideSoftInputFromWindow(NewContacts.this.getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
}
}
}
return super.onTouchEvent(event);
}