imm.showSoftInput(addNewMember, InputMethodManager.RESULT_SHOWN); // imm.showSoftInput(addNewMember,InputMethodManager.SHOW_FORCED); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
/* //问题的原因似乎是必须等待UI绘制完成后弹出软键盘的代码才会有效。于是就采用了上面的方法。需要注意的是,在此之前必须让edittext获取焦点,不然也是无效的。 Timer timer = new Timer(); //设置定时器 timer.schedule(new TimerTask() { @Override public void run() { //弹出软键盘的代码 imm.showSoftInput(addNewMember, InputMethodManager.RESULT_SHOWN); // imm.showSoftInput(addNewMember,InputMethodManager.SHOW_FORCED); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } }, 300); //设置300毫秒的时长*/
在弹出键盘之前要注意设置edit text
addNewMember = (EditTextTypeFaceXh) findViewById(R.id.membersmanager_addnewmember); addNewMember.setFocusable(true); addNewMember.requestFocus();
收起键盘(本质上一样)
InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(addNewMember.getWindowToken(),0);
/* InputMethodManager imm = (InputMethodManager)getContext().getSystemService(Context.INPUT_METHOD_SERVICE); if(imm.isActive()&&getCurrentFocus()!=null){ if (getCurrentFocus().getWindowToken()!=null) { imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } }*/