@Override
public void onResume() {
super.onResume();
SingletonBus.INSTANCE.getBus().register(this);
//passwordInput.requestFocus(); <-- that doesn't work
passwordInput.postDelayed(new ShowKeyboard(), 300); //250 sometimes doesn't run if returning from LockScreen
}
fun View.showSoftKeyboard() {
this.requestFocus()
val imm = context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
}
val inputMethodManager: InputMethodManager =
context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
inputMethodManager.showSoftInput(edittext, InputMethodManager.SHOW_IMPLICIT)
//Coloca o foo no txtDlgQuantidade e então chama o teclado
mDialogView.txtDlgQuantidade.isFocusable = true
mDialogView.txtDlgQuantidade.isFocusableInTouchMode = true
mDialogView.txtDlgQuantidade.requestFocus()
mAlertDialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM)
mAlertDialog.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
8条答案
按热度按时间h22fl7wq1#
好先生,试试这个:
我不确定,但某些手机(某些较旧的设备)可能需要:
vptzau2j2#
下面是适用于我的代码。
就是这样!尽情享受吧;)
brjng4g33#
其中
ShowKeyboard
为成功输入后,我还确保隐藏键盘
从技术上讲,我只是在运行软键盘显示请求之前添加了300毫秒的延迟。很奇怪,对吧?还将
requestFocus()
更改为requestFocusFromTouch()
。编辑:不要使用
requestFocusFromTouch()
,它会给启动器一个触摸事件。坚持使用requestFocus()
。编辑2:在对话框(
DialogFragment
)中,使用以下命令代替
nfg76nw04#
在我的例子中,我希望显示虚拟键盘而不引用特定的文本框,所以我使用了focus的公认答案的第一部分:
然后我展示了虚拟键盘:
knsnq2tg5#
对于Kotlin,使用扩展函数实现如下
kuhbmx9i6#
f3temu5u7#
在我的情况只是这解决了所有问题:
我把它放在RecyclerView Adapter中,因为我使用数据绑定。我也没有使用
edittext.setFocusableInTouchMode(true)
,因为在我的布局中默认为true
。不要使用这行:edittext.requestFocus()
.当我把它拆下来的时候,它就开始工作了:)6uxekuva8#
瓦尔mBuilder.show