Android 键盘输入预定义文本

Android Keyboard input predefined text

我一直在关注 this tutorial 如何制作自定义键盘。到目前为止一切顺利。

但是,我想知道是否可以创建一个按钮来输入预定义的文本。例如。标有 "Name" 的按钮用于输入用户名? 如果可能的话,我该怎么做?我做了广泛的研究,但一无所获。

是的,这是可能的。在您的 InputMethodService 实现中定义新的 keycode

private final static int NAME_CODE = -32; // value is absolutely random. The main requirement - there should not be coincidence with other codes

然后在 onKey() 方法中检查它

@Override
public void onKey(int primaryCode, int[] keyCodes) {
    InputConnection ic = getCurrentInputConnection();
        switch(primaryCode){
        .....
        case NAME_CODE:
            ic.commitText(name, name.length());
            break;
        .....

然后只需使用此代码绑定键盘规范(示例中的qwerty.xml)和逻辑中的特殊键。

<Key android:codes="-32" android:keyLabel="NAME" android:keyWidth="20%p" android:isRepeatable="true"/>