java - 显示对话框的软键盘

标签 java android kotlin android-softkeyboard android-sdk-2.1

我正在显示一个带有 edittext View 的对话框。但是,只有当用户在编辑 View 内按下时,软键盘才会打开。所以我尝试使用以下代码调用 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;

关于java - 显示对话框的软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258623/

相关文章:

android - 如何使用 Android Kotlin 在 WebView 中加载 URL?

java - 如何修复这个空指针异常?

android - 使用 Android 闹钟与计时器任务?

android - 位置 sendExtraCommands - 方法不起作用并关闭应用程序

java - Java 信号量的确定性如何保证?

android - 这种类型有一个构造函数,必须在这里初始化 - Kotlin

java - a += a++ * a++ * a++ 在 Java 中。它是如何被评估的?

java - 为什么我的更新不起作用?

java - 如果我重载 equals 我仍然应该重写 java 中的 haschode 吗?

android - DIO 响应解码问题