Android:在焦点位于EditText时自动显示软键盘

我正在使用AlertDialog显示一个输入框。 当我调用AlertDialog.show() ,对话框中的EditText自动对焦,但软键盘不会自动显示。

如何在显示对话框时自动显示软键盘? (并且没有物理/硬件键盘)。 与我按搜索按钮调用全局搜索时的方式类似,软键盘会自动显示。


您可以在AlertDialog上的EditText上创建焦点侦听AlertDialog ,然后获取AlertDialogWindow 。 从那里你可以通过调用setSoftInputMode来进行软键盘显示。

final AlertDialog dialog = ...;

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

为显示键盘使用情况:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);

隐藏键盘使用:

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(),0); 

您可以在创建对话框后立即请求软键盘(在SDK-r20上进行测试)

// create dialog
final AlertDialog dialog = ...; 

// request keyboard   
dialog.getWindow().setSoftInputMode (WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
链接地址: http://www.djcxy.com/p/16661.html

上一篇: Android: show soft keyboard automatically when focus is on an EditText

下一篇: How to automatically show soft keyboard on start?