Android 软键盘:只有顶行键有效

Android soft keyboard: only top row of keys work

这个问题已经有了答案,这是对 SO 问题库的贡献。

在我的自定义视图中,我实现了 onCreateInputConnection 方法,如下所示:

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    BaseInputConnection baseInputConnection =
            new BaseInputConnection(this, false);

    outAttrs.actionLabel = null;
    outAttrs.inputType = InputType.TYPE_NULL;
    outAttrs.imeOptions = EditorInfo.IME_ACTION_NONE;

    return baseInputConnection;
}

但由于某些奇怪的原因,在 Android 5 中的默认 AOSP 键盘中只有最上面一行的键有效 。 请注意,我有横向布局。如果我切换到纵向,它就会开始正常工作。其他键盘也可以正常工作。

事实证明,我不得不更改这一行:

outAttrs.imeOptions = EditorInfo.IME_ACTION_NONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI;

IME_FLAG_NO_EXTRACT_UI 是防止键盘进入全屏的标志。但它还没有进入全屏(因为我的输入类型是 TYPE_NULL)。

最重要的是,这是 Android 5.

的错误