显示对话框的软键盘

我正在显示一个带有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

上一篇: Show soft keyboard for dialog

下一篇: Method to get all EditTexts in a View