java - 弹出 AlertDialog 时显示键盘

标签 java android android-softkeyboard

我研究了很多关于 SO 的答案,并提出了以下代码来在弹出对话框时显示键盘:

final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("Title");
    final EditText input = new EditText(this);
    input.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean focused) {
            alertDialog
                    .getWindow()
                    .setSoftInputMode(
                            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

        }
    });
    input.setFocusable(true);
    input.requestFocus();
    alertDialog.setView(input);

            alertDialog.show();

显示对话框,但键盘未弹出。如果这有区别的话,这一切都在 onTouch(...) 方法中。

我的应用程序仅支持横向模式。我发现在纵向模式下,它正在显示。这是为什么?

感谢任何帮助。

最佳答案

看起来是横向模式让我失望了。下面的代码立即解决了问题:

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
                        InputMethodManager.HIDE_IMPLICIT_ONLY);
                imm.showSoftInput(input, InputMethodManager.SHOW_FORCED);
                alertDialog
                        .getWindow()
                        .setSoftInputMode(
                                WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

关于java - 弹出 AlertDialog 时显示键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650005/

相关文章:

android - 如何在 Android 上为 EditText 设置 MultiLine 和 imeOptions ="actionDone"?

android - android中adjustResize和adjustPan的区别?

java - JUnit assertEquals() 失败,即使它们看起来相等

java - AES 256 加密 - Qt 等同于 Java

android - 在 Dialer 中的调用断开连接以 ACTION_CALL 开始后,确保控制返回到调用 Activity 的任何方法

android - 如何使用远程 IP 地址来使用 android-net-rtp-package 实现应用程序?

java - 使用 Java 8 Stream API 过滤嵌套列表

java - 用Java替换文本文件的第一行

java - onActivityResult byte[] data 不管图片多大都返回null

javascript - 在不隐藏键盘的情况下从 WebView 评估 Javascript