如何检查设备上是否打开了软键盘

时间:2013-01-25 08:25:02

标签: c# android xamarin.android

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

我的问题在于,所有这些都是java代码,我无法用java代码做任何事情,因为我不知道API的Monodroid等价物以及其他一些小东西...

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

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

有没有办法识别键盘是否被打开,使用这些线,还是我必须做调整大小的事情?如果调整大小是唯一的东西,它在Android的Mono中如何工作?

2 个答案:

答案 0 :(得分:3)

试试这个:

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

    if (imm.isAcceptingText()) {
        writeToLog("Software Keyboard was shown");
    } else {
        writeToLog("Software Keyboard was not shown");
    }

答案 1 :(得分:1)

如果显示软键盘,无法检测,但您可以通过了解调整活动视图来间接地知道显示软键盘
这2行隐藏了软键盘..

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

也可以看..