Activity初始化后,如果有EditText,则自动弹出软键盘。
如果不想弹出软键盘,在清单文件下对应Activity节点下配置
android:windowSoftInputMode="stateHidden"
点击EditText意外的界面,让软键盘消失:
@Override
public boolean onTouchEvent(MotionEvent event) {
InputMethodManager imeManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imeManager.hideSoftInputFromWindow(getWindow().getDecorView()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
return super.onTouchEvent(event);
}
呼出软键盘:
有时候一个密码框输入密码需要去服务器验证,如果验证失败,应该自动呼出软键盘,提示用户重新输入密码:
下面的例子中,et_psw是一个EditText的组件,将密码框内容清空,然后让密码框获取焦点,最后将软键盘呼出(使用InputMethodManager的toggleSoftInput(int ,int) 方法)
// 呼出软键盘
private InputMethodManager m; // 软键盘管理器
private void showSoftKeyBorad() {
et_psw.setText("");
et_psw.requestFocus();
if (m == null) {
m = (InputMethodManager) DetailActivity.this.getBaseContext()
.getSystemService(INPUT_METHOD_SERVICE);
}
m.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
}
还有一种方法,让界面上永远不弹出来输入法面板,即使界面上有EditText也不可以。只有一行代码,写在Activity 中 onCreate 方法内,setContentView之前。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags( //这行设置代码屏蔽了输入面板,无法使用输入法
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
setContentView(R.layout.activity_main);
}