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

I'm showing an input box using AlertDialog . The EditText inside the dialog itself is automatically focused when I call AlertDialog.show() , but the soft keyboard is not automatically shown.

How do I make the soft keyboard automatically show when the dialog is shown? (and there is no physical/hardware keyboard). Similar to how when I press the Search button to invoke the global search, the soft keyboard is automatically shown.


You can create a focus listener on the EditText on the AlertDialog , then get the AlertDialog 's Window . From there you can make the soft keyboard show by calling 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);
        }
    }
});

For showing keyboard use:

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

For hiding keyboard use:

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/16662.html

上一篇: Android键盘不会出现

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