在Dialog中显示键盘

时间:2011-07-16 19:08:32

标签: android android-edittext

我有这段代码( RelativeLayout 只是我主要布局中的一行,并不重要。)

RelativeLayout cellphoneNumberLayout = (RelativeLayout) findViewById(R.id.cellphone_number);
        cellphoneNumberLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SettingsDialog myDialog = new SettingsDialog(Main.this);
                myDialog.show();
            }
        });

在我的自定义对话框( SettingsDialog )中,我有 EditText 和一个按钮。如何在显示对话框时强制键盘打开并专注于我的(单个)EditText字段?

我尝试过经典的“强制”,我在这里找到了SO,但这不是活动,而是一个对话框。

编辑:我试过了,但它没有用。将 myDialog 声明为类变量,并添加到 myDialog.show();

下方
myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    @Override
                    public void onFocusChange(View v, boolean hasFocus) {
                        if (hasFocus) {
                            myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                        }
                    }
                });

什么都没发生。

3 个答案:

答案 0 :(得分:6)

以下将在editText聚焦时调出键盘:

EditText editText;
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean focused)
    {
        if (focused)
        {
            dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
});

然后只需将editText设置为聚焦:

editText.setFocusable(true);
editText.requestFocus();

答案 1 :(得分:1)

以下将在editText聚焦时调出键盘,特别是当你有自定义Dialog / DialogFragment时:

myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                    getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
                }
            }
        });

答案 2 :(得分:0)

在AndroidManifest.xml中,您可以将android:windowSoftInputMode =“stateVisible”添加到activity标签中以自动显示键盘。