工作中经常有同事询问如何隐藏和显示键盘。三星内部其实有自己写的API,调用方便、灵活,但是研究了下InputMethodManager,里面是有原生的方法可以调用的。
通过查询和写demo测试,如下方法测试有效:
InputMethodManager imm = (InputMethodManager) getSystemService( Context.INPUT_METHOD_SERVICE);
//隐藏键盘
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
//弹出键盘 注:这里的view要是弹出键盘的宿主view imm.showSoftInput(View,InputMethodManager.SHOW_FORCED);
Demo内容如下:
show = (Button) findViewById(R.id.show);
hide = (Button) findViewById(R.id.hide);
final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
show.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
//hello.requestFocus();//有blog提到,如果弹出键盘不好用,可以先requestFocus,确认焦点在编辑框
imm.showSoftInput(hello,InputMethodManager.SHOW_FORCED);
}
});
hide.setOnClickListener(new View.OnClickListener() { @Override
public void onClick(View v) {
imm.hideSoftInputFromWindow(hello.getWindowToken(), 0);
}
});