Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 软键盘不允许在同一个键上使用keyOutputText和keyIcon_Android_Android Softkeyboard - Fatal编程技术网

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)