我正在尝试修改SoftKeyboard
示例(Moto Xoom上的Andriod 3.1),以便我可以使用键上的图标,并在按下该键时输出unicode
字符。< br />具体来说,我试图让它输出一个横幅八分音符(音乐符号),即unicode \u266B
。
遗憾的是,我无法在keyOutputText
文件中使用keyIcon
和symbols.xml
来设置密钥。
我需要keyIcon
,因为我无法找到将Typeface
上的Keyboard Keys
更改为具有该角色的方法。我找到了我会去做的地方,但是它调用私有方法(.setTypeFace)
埋在android.jar
(KeyboardView
,如果我记得的话),所以我做不到。
所以我只是用一个图标来放上钥匙。这与android:codes
结合使用效果很好,但{I} android:codes
在我提供unicode
字符的时候不会输出android:codes="\\u266B"
字符。我需要android:keyOutputText="\u266B"
才能让角色实际输出到我的EditText
。所以我可以让键显示一个我的角色的图标,EditText
显示角色本身,但不是两个一起。
当我尝试使用2时,它编译并运行就好了,然后我按下键盘上的shift键来显示符号,只显示数字0-9,键盘的其余部分就消失了。现在错误消息或任何东西,刚刚消失。没有任何地方说这两件事是我能找到的,它也没有任何合理意义。
如果这是一个错误,我只是想要知道所以我可以接受它并且不再对它进行撞击(计划的修复日期也会很好)。如果没有,我怎样才能同时获取keyboard
和EditText
框中的密钥以显示我的第八个音符。我愿意接受任何建议或工作。
谢谢。
答案 0 :(得分:1)
使用HashMap将android:代码映射到你的unicode角色。
<Key android:codes="719" android:keyIcon="@drawable/zo"/> //use your icon and required code here
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的值。
答案 1 :(得分:0)
不确定这是否真的有用,因为它适用于AnySoftKeyboard
,但问题是一样的,所以也许解决方案也是如此?
解决问题的方法(对我来说,为ASK创建布局)是这样的:
将keyIcon
和keyOutputText
提供为android:codes
,但不是keyLabel
!
使用android:代码的第一个字母填充keyLabel
(由ASK?),但您仍然可以看到图像并输出多字母文本。
希望它有所帮助,无论如何都值得一试。我想。
(请注意:我刚刚发现了这一点,虽然我可以重现它,但我无法保证这是否真的解决了这个问题。不过我真的这么认为。)
答案 2 :(得分:0)
不要在\u266B
中使用android:codes
,而是尝试unicode的int值:0x266B
。
然后从onKey
您可以使用以下命令将其转换回String:
Character.toString((char)primaryCode)