显示对话框的软键盘
我正在显示一个带有edittext视图的对话框。 但是,软键盘仅在用户按下编辑视图内时才会打开。 所以我试着用下面的代码调用一个InputMethodManager。
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
dialogField是输入字段。 但是,我到底什么时候应该这样做? 我在对话框的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标志取得键盘。 但那时它不会在退出时关闭。 我只能在显示对话框之前这样做。 在任何回调中,它也不起作用。
真棒问题,我也试图做到这一点,并找到了解决方案。
使用对话框构建器类AlertDialog.Builder
你将不得不像这样调用对话框:
AlertDialog.Builder builder = new AlertDialog.Builder();
AlertDialog dialog;
builder.set...
dialog = builder.create();
dialog.getWindow().setSoftInputMode(LayoutParams.SOFT_INPUT_STATE_VISIBLE);
dialog.show();
这对我来说工作得很好。
注意:你必须import android.view.WindowManager.LayoutParams;
为那里的常数值。
这似乎是不可能的。
所以我做了一个新的Activity而不是Dialog,让用户在那里编辑。 请注意,在活动中,您可以在清单文件中设置键盘模式。 我将它设置为在活动打开时显示。
另请注意,使用硬键在模拟器上进行测试不会打开SHOW_IMPLICIT或0标志的键盘。
链接地址: http://www.djcxy.com/p/93357.html