我正在开发一个适用于美国本土语言的 Android IME,它的字符不是单个 unicode 代码点而是 unicode 字符串。例如,声门化的禁止 lambda:ƛ̕
我发现自己处于 catch-22 中,因为我可以创建一个输出正确字符但没有正确标签的 Key,或者我可以有正确的标签但输出错误。我应该说我一直在尝试在 xml 中实现这一点,我认为相关的属性是:
android:codes
android:keyLabel
android:keyOutputText
android:keyIcon
更多详情:
据我所知,不可能更改 keyLabel 上的字体,因为系统的DEFAULT_BOLD
字体被硬编码到 Keyboard 类中。因此我不能使用以下来正确定义密钥:
<Key android:keyOutputText="@string/glot_barred_lambda"
android:keyLabel="@string/glot_barred_lambda"/>
(其中字符串常量glot_barred_lambda
在相关位置定义为“ƛ̕”)
问题是默认的 Android 字体不支持此字形。
因此,我认为我必须为 keylabel 制作一个图标。我这样做了。然而,这个定义给出了 NullPointerError:
<Key android:keyOutputText="@string/glot_barred_lambda"
android:keyIcon="@drawable/keyboard_barred_lambda" />`
问题似乎keyOutputText
是与keyIcon
. (我不知道为什么!)。所以这让我尝试了这个:
<Key android:codes="411,789"
android:keyIcon="@drawable/keyboard_barred_lambda" />
这编译并运行良好,但没有给出正确的行为。键标签看起来不错,但输出只是单击时的禁止 lambda(411)和双击时的组合变音符号(789)。
我的想法已经用完了,所以我期待真正专家的一些建议。非常感谢您的阅读,我很高兴在你们需要我的时候澄清我的问题。