在Android 自定义键盘中,如何将字母键盘更改为符号键盘?

In Android Custom Keyboard, how to change Alphabets Keyboard to Symbols Keyboard?

在将用户从字母键盘导航到符号键盘时,布局对齐被破坏了。默认情况下,布局采用 5dp 填充,用户看不到最后一列键。

注:图片如下所示。

我在 onKey 方法中处理了将用户从字母键盘导航到符号键盘的关键操作

override fun onKey(primaryCode: Int, keyCodes: IntArray?) {
when (primaryCode) {
        KEYCODE_ALPHABETS -> {
            keyboardView?.keyboard = Keyboard(this, R.xml.keyboard)
        }

        KEYCODE_SYMBOLS_1 -> {
            keyboardView?.keyboard = Keyboard(this, R.xml.keyboard_symbols_1)
        }

        KEYCODE_SYMBOLS_2 -> {
            keyboardView?.keyboard = Keyboard(this, R.xml.keyboard_symbols_2)
        }
 }

}

请问有没有其他方法可以改变键盘(或)我做错了什么

我遇到的情况如下图。 字母键盘:

在 Kotlin 中使用 setMethod 在 KeyboardView 中更改键盘时,它会发生一些轻微的变化 UI 错误

符号键盘:

注:

键盘布局根据 百分比 而非 dp 绘制每个键。 所以声明你的键宽为 %p 而不是 dp

在布局文件中

<Row
            android:horizontalGap="@fraction/key_horizontal_ten_keys_gap"
            android:keyWidth="@fraction/ten_keys_key_width"
            android:rowEdgeFlags="top">
</Row>

在资源文件中

<fraction name="ten_keys_key_width">8.8%p</fraction>