我正在显示一个带有编辑文本视图的对话框。然而,只有当用户在编辑视图中按下时,软键盘才会打开。因此,我尝试使用以下代码调用InputMethodManager。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
字符串
dialogField是输入字段。然而,我到底应该在什么时候这样做呢?我在dialog的onStart()方法中尝试过,但没有任何效果。我之前也尝试过为dialogField请求焦点,但没有任何改变。
我也试过这个代码
dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
public void onFocusChange (View v, boolean hasFocus)
{
if (hasFocus)
{
Main.log("here");
dialogInput.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
/*
InputMethodManager mgr =
(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(dialogField,0);
*/
}
}
});
型
在两个版本中。但是没有软键盘会出现。Main.log只是一个日志,它向我表明函数实际上被调用了。是的,它被调用了。
我可以在对话框打开之前用SHOW_FORCED标志获取键盘。但是在退出时它不会关闭。我只能在显示对话框之前这样做。在任何回调中它也不起作用。
6条答案
按热度按时间6vl6ewon1#
很棒的问题,我也试着这样做,并找到了解决方案。
使用对话框构建器类
AlertDialog.Builder
,你必须像这样调用对话框:字符串
这对我来说很好。
注意:你必须
import android.view.WindowManager.LayoutParams;
为常量值。xpszyzbs2#
字符串
tzcvj98z3#
Kotlin
下面是测试代码。
字符串
确保你从
show()
方法访问window
属性。从create()
方法获取window
对我来说是返回null
,所以键盘不显示。从
androidx.appcompat.app.AlertDialog
导入AlertDialog
。从android.view
导入WindowManager
。llycmphe4#
这是我的解决方案,它在对话框中运行良好。
字符串
也许你还需要将此添加到AndroidManifest.xml中的Activity标记中,以便在对话框关闭时关闭键盘。
型
e7arh2l65#
使用Kotlin的对话片段
override onStart方法
字符串
如果您想在解除后关闭,请使用以下代码覆盖解除方法
型
izkcnapc6#
我尝试过并取得了成功:
字符串