在对话框中触发EditText的软键盘的任何无痛方法?

时间:2009-11-18 17:20:33

标签: android dialog

我将EditText呈现为列表样式AlertDialog的一个元素(由默认的ListView实现支持)。我有点期望这种情况不会改变EditText的行为,但确实如此:点击EditText不再产生软键盘。

经过一个小时的焦点设置和点击处理程序后,我厌倦了并调试到InputMethodManager.showSoftInput(),发现了这个:

    public boolean showSoftInput(View view, int flags,
        ResultReceiver resultReceiver) {
        ...
        if (mServedView != view && (mServedView == null
                || !mServedView.checkInputConnectionProxy(view))) {
            return false;
        }
        ...
    }
}

这里的问题是mServedView是支持对话框的ListView,而view是EditText,ListView.checkInputConnectionProxy()在ListView的默认实现中只做return false (被子类覆盖)。

更糟糕的是,我找不到设置自定义ListView的方法,该ListView允许代理IME请求; AlertDialog.Builder.setView()接受自定义ListView,但这不是InputMethodManager看到的ListView。

有任何建议如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

你有没有试过这样的事情,如果你有

的话,道歉
getBaseContext().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);

答案 1 :(得分:0)

让我以一个大胖子开头,我知道关于ANDROID SDK的事情。

据说我会建议: 写一个requestKeyboard throwable。 让您的EditText抛出requestKeyboard。 这样ListView可以处理throwable,生成键盘,然后将输入返回到编辑文本。 这样mServedView == view

我想。