Android 软键盘不允许在同一个键上使用keyOutputText和keyIcon
我正在尝试修改Android 软键盘不允许在同一个键上使用keyOutputText和keyIcon,android,android-softkeyboard,Android,Android Softkeyboard,我正在尝试修改软键盘示例(Moto Xoom上的Andriod 3.1),以便我可以在按键上使用图标,并在按下该键时让它输出unicode字符。具体地说,我正在尝试让它输出一个带光束的第八音符(音乐符号),即unicode\u266B不幸的是,我无法在布置键的symbols.xml文件中的同一个键上使用keyouttext和keycon我需要键盘图标,因为我找不到方法将键盘键上的字体更改为具有该字符的字体。我找到了我要做的地方,但是它调用了一个私有方法(.setTypeFace),这个方法埋在a
软键盘
示例(Moto Xoom上的Andriod 3.1),以便我可以在按键上使用图标,并在按下该键时让它输出unicode
字符。具体地说,我正在尝试让它输出一个带光束的第八音符(音乐符号),即
unicode\u266B
不幸的是,我无法在布置键的
symbols.xml
文件中的同一个键上使用keyouttext
和keycon
我需要
键盘图标
,因为我找不到方法将键盘键
上的字体
更改为具有该字符的字体。我找到了我要做的地方,但是它调用了一个私有方法(.setTypeFace)
,这个方法埋在android.jar
(KeyboardView
,如果我记得的话)中,所以我不能所以我只是用一个图标放在钥匙上。这与
android:codes
结合使用效果很好,但是android:codes
在输入android:codes=“\\u266B”
时将不会输出我的unicode
字符,文档说明它应该接受该字符我需要
android:keyOutputText=“\u266B”
将字符实际输出到我的EditText
。因此,我可以让按键显示我的角色图标,EditText
显示角色本身,但不能同时显示两者。当我尝试同时使用2时,它编译并运行得很好,然后我点击键盘上的shift键显示符号,只显示数字0-9,键盘的其余部分都不见了。现在,错误消息或任何东西,刚刚消失。它没有说这两件事是我能找到的唯一的,也没有任何逻辑上的意义。如果这是一个bug,我只想知道,这样我就可以接受它,不再去碰它(计划好的修复日期也不错)。如果没有,我如何才能同时使用
键盘上的键和编辑文本
框来显示我的第八个音符。我愿意接受任何建议或解决办法
谢谢。使用HashMap将android:代码映射到您的unicode字符
在XML中:
在需要的地方使用c值。不确定这是否真的有用,因为它适用于任何软键盘,但问题是相同的,所以解决方案可能也是一样的
解决问题的方法(对我来说,为ASK创建布局)是:
提供按键图标
和按键输出文本
以及安卓:代码
,但不提供按键标签
!
keyLabel
被(ASK?)填满了android的第一个字母:code,但你仍然可以看到图像,它输出多字母文本
希望它有帮助,我想无论如何都值得一试
(请注意:我刚刚发现了这一点,虽然我可以复制它,但我不能保证是否真的是这一点解决了问题。不过,我真的这么认为。)而不是在android:code
中使用\u266B
,尝试unicode:0x266B
的int值
然后,从onKey
可以使用以下命令将其转换回字符串:
Character.toString((char)primaryCode)
好的,谢谢,这很有帮助。但为什么这比用XML做更可取呢?@IgorG。文档说keyOutputText和keyIcon可以一起使用,但实际上似乎不起作用。所以,这是一个解决方法:)此外,keyOutputText直接将文本提交到当前编辑器,但如果使用android:codes方法,则可以在提交文本之前格式化文本。
HashMap<String, String> keyCodeMap = new HashMap<String, String>();
keyCodeMap.put("719", ""+'\u0986');
String c = keyCodeMap.get(String.valueOf(primaryCode));
Character.toString((char)primaryCode)