今天公司项目处理一个软键盘弹出的逻辑,要求点击按钮之后弹出软键盘。
//获取焦点 editText.setFocusable(真正的); editText.setFocusableInTouchMode(真正的); editText.requestFocus ();//弹出软键盘 editText InputMethodManager imm=(InputMethodManager)。getContext () .getSystemService (Context.INPUT_METHOD_SERVICE); editText imm.showSoftInput (0); >之前在正常的一个活动按照上面是可以实现的,但是我遇到的问题是加载数据显示之后点击按钮改变了布局的显示状况,然后再想弹出软键盘,但是一直无法弹出键盘
通过查阅网上资料,给出的解析是在布局加载的过程中是无法弹出软键盘的,所以需要适当的延迟一下软键盘的弹出最终代码如下:
//获取焦点 editText.setFocusable(真正的); editText.setFocusableInTouchMode(真正的); editText.requestFocus ();//延迟弹出软键盘 计时器计时=new计时器(); 计时器。日程安排(新TimerTask () { @Override 公共空间run () { editText InputMethodManager imm=(InputMethodManager)。getContext () .getSystemService (Context.INPUT_METHOD_SERVICE); editText imm.showSoftInput (InputMethodManager.SHOW_FORCED); } }, 300); >之前使用上面代码就实现了强制弹出软键盘的问题。
1。如果软键盘已弹出则隐藏,反之弹出。
InputMethodManager imm=(InputMethodManager) getSystemService (Context.INPUT_METHOD_SERVICE); imm。toggleSoftInput (0, InputMethodManager.HIDE_NOT_ALWAYS); >之前2。隐藏软键盘
InputMethodManager imm=(InputMethodManager) v。getContext ()。getSystemService(上下文。INPUT_METHOD_SERVICE); 如果(imm)。isActive ()) { imm。hideSoftInputFromWindow (v。getApplicationWindowToken (), 0); >之前3。显示软键盘
InputMethodManager imm=(InputMethodManager) v。getContext ()。getSystemService(上下文。INPUT_METHOD_SERVICE); imm.showSoftInput (v, InputMethodManager.SHOW_FORCED);>之前ps:其实通过系统服务取得的InputMethodManager应该需要判断是否为null,这里偷懒了,大家记得判断一下
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
浅谈关于android软键盘弹出问题