1

我必须检测是否打开了软键盘。我在这里阅读了一些关于如何做到这一点的文章,一个例子是>this<还有另一个,也许更好的一个,但是两个 ar 针对同一个目标,以检查布局/视图是否被迫调整大小。

我的问题是,这一切都是 java 代码,我不能用 java 代码做任何事情,因为我不知道 API 的 Monodroid 等价物,以及其他一些小事情......

我发现的另一件事是,有一个 InputMethodService.OnWindowShown() 方法/事件,以及是否显示键盘的标识符。

var inputManager = (InputMethodService)GetSystemService(InputMethodService);
inputManager.OnWindowShown();
bool bla = inputManager.IsInputViewShown;

有没有办法通过这些行来识别键盘是否打开,或者我是否必须调整大小?如果调整大小是唯一的事情,它如何在 Mono for Android 中工作?

4

2 回答 2

3

尝试这个:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

    if (imm.isAcceptingText()) {
        writeToLog("Software Keyboard was shown");
    } else {
        writeToLog("Software Keyboard was not shown");
    }
于 2013-01-25T08:48:57.140 回答
1

无法检测是否显示软键盘,但您可以通过知道您的活动视图已调整大小来间接知道显示了软键盘。
这 2 行隐藏了软键盘..

var input = (InputMethodManager)GetSystemService(InputMethodService);
input.HideSoftInputFromWindow(editText1.WindowToken, HideSoftInputFlags.None);

也能看。。

于 2013-01-25T10:03:03.383 回答