在使用软键盘的Android设备上,我想防止全屏键盘编辑视图(如下所示)在横屏模式下出现(即我只想看到软键盘本身和它后面的视图)。

我假设这可以使用InputMethodService上的setextractviewshow (false)方法实现,但我无法访问此的默认实例,也不想实现自定义输入法。

编辑添加:视图输入将不是一个TextView(它是一个自定义InputConnection实现的视图),所以android:imeOptions="flagNoExtractUi"将不会在这里工作。


当前回答

我的解决方案:

android:imeOptions="flagNoExtractUi|flagNoFullscreen"

其他回答

在XML文件中的每个EditText中添加属性android:imeOptions="flagNoExtractUi"。

你可以使用:

android:imeOptions="flagNoFullscreen" 

在编辑文本中

如果你直接修改IME,你可以通过覆盖onUpdateExtractingVisibility来阻止它显示ExtractedView:

@Override
public void onUpdateExtractingVisibility(EditorInfo ei) {
    ei.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
    super.onUpdateExtractingVisibility(ei);
}

使用android:imeOptions="flagNoFullscreen"来实现该功能。

你可以调用隐藏软键盘和清除搜索视图的焦点。

public void hideKeyboard(View view) {
    InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

super.clearFocus();