原文地址:http://blog.csdn.net/jjmm2009/article/details/7967730
EditText在不同的使用环境下调用的方法是不一样的,找不到通用万能的方法,网上写的那些方法也只能作参考,不通用;
方法一:
WindowManager.LayoutParams params = act.getWindow().getAttributes();
// 隐藏软键盘
act.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
//显示软键盘
act.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE;
方法二:
//显示软键盘
mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mReasonEt, 0);
//隐藏软键盘
mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromInputMethod(mReasonEt.getWindowToken(), 0);
2.TabActivity中嵌套的子Activity中调用软键盘:
//显示软键盘
mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mReasonEt, 0);
//隐藏软键盘
mReasonEt.requestFocus();
InputMethodManager imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromInputMethod(mReasonEt.getWindowToken(), 0);
在TabActivity中调用软键盘,默认会把底部Tab菜单推上去,导致界面显示和操作不方便,可以设置Activity的属性,让键盘直接覆盖底部tab菜单;如下:
androidMainfest.xml文件中在此Activity中写入 android:windowSoftInputMode="adjustPan"
3.自定义Dialog中的EditText调用软键盘:
//显示软键盘
myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
//显示键盘(这个方法针对三星9100使用)
warningDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
//隐藏软键盘
myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
// 隐藏软键盘(这个方法针对三星9100使用)
WindowManager.LayoutParams params = getWindow().getAttributes();
getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
params.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
4.捕获屏幕点击事件,隐藏输入法
getWindow().getDecorView().setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
((InputMethodManager)getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(v.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
return false;
}
});