gpt4 book ai didi

android - SoftKeyboard 不允许在同一个键上使用 keyOutputText 和 keyIcon

转载 作者:行者123 更新时间:2023-11-29 02:12:38 25 4
gpt4 key购买 nike

我正在尝试修改 SoftKeyboard 示例(Moto Xoom 上的 Andriod 3.1),以便我可以在键上使用图标并让它输出 unicode 字符该键被按下。
具体来说,我试图让它输出一个八分音符(音乐符号),它是 unicode\u266B

不幸的是,我不能在 symbols.xml 文件中的同一个键上使用 keyOutputTextkeyIcon键。

我需要 keyIcon,因为我找不到一种方法来将 Keyboard Keys 上的 Typeface 更改为那个角色。我找到了我会做的地方,但它调用了一个私有(private)方法 (.setTypeFace) 埋在 android.jar (KeyboardView 如果我记得)所以我不能。

所以我只是用一个图标放在 key 上。这与 android:codes 结合使用效果很好,但是 android:codes 在我输入 android 时不会输出我的 unicode 字符: codes="\\u266B" 文档说它应该接受。
我需要 android:keyOutputText="\u266B" 来让字符实际输出到我的 EditText 中。所以我可以让按键显示我角色的图标,EditText 显示角色本身,而不是两者一起显示。

当我尝试同时使用这 2 个时,它编译并运行得很好,然后我按下键盘上的 shift 键来显示符号,只有数字 0-9 出现,键盘的其余部分就消失了。现在错误消息或任何东西都消失了。它没有说这两个东西是我能找到的排他性的,也没有任何逻辑意义。

如果这是一个错误,我只想知道这样我就可以接受它并停止反对它(计划好的修复日期也很好)。如果没有,我怎样才能同时获得 keyboardEditText 框上的键来显示我的八分音符。我愿意接受任何建议或解决方法。

谢谢。

最佳答案

使用 HashMap 将 android:codes 映射到您的 unicode 字符。

在 XML 中:

<Key android:codes="719" android:keyIcon="@drawable/zo"/> //use your icon and required code here

在java代码中:

HashMap<String, String> keyCodeMap = new HashMap<String, String>();
keyCodeMap.put("719", ""+'\u0986');

然后,在onKey(int primaryCode, int[] keyCodes)方法中使用以下代码获取对应的字符:

   String c = keyCodeMap.get(String.valueOf(primaryCode)); 

在需要的地方使用 c 的值。

关于android - SoftKeyboard 不允许在同一个键上使用 keyOutputText 和 keyIcon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6339028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com