Android:emoji作为自定义键盘上的keyLabel?

时间:2015-07-25 06:22:15

标签: android keyboard emoji

我正在开发一个自定义键盘。但是对于表情符号,我不能将unicode表情符号设置为 android:keyLabel 。我想要使用 android:keyIcon

\uxxxx不适用于U+10000及更高版本。表情符号从U+1F600开始。那么如何更改此代码范围以将表情符号用作keyLabel?

<Row>
  <Key android:codes="-100" android:keyLabel="\u1F600"/>
  ... 
</Row>

我知道,这不会奏效。那么在不使用keyIcon的情况下也可以这样做吗? 感谢帮助。

1 个答案:

答案 0 :(得分:0)

您可以查看视图:

<resources>
    <array
        name="emoji_nature"
        format="string"
    >
        <!-- <item>1f415</item> -->
        <item>1f436</item>
        <item>1f429</item>

这是文件夹和

中的表情符号unidcode定义

此资源数组用于 xml / emoji_nature.xml

代码:

<Keyboard
    xmlns:latin="http://schemas.android.com/apk/res-auto"
    latin:keyWidth="@fraction/config_emoji_keyboard_key_width"
    latin:keyLetterSize="90%p"
    latin:keyLabelSize="60%p"
    latin:rowHeight="@fraction/config_emoji_keyboard_row_height"
>
    <GridRows
        latin:textsArray="@array/emoji_nature"
        latin:keyLabelFlags="fontNormal"
        latin:backgroundType="empty" />
</Keyboard>

第二个解决方案   

更改代码 SoftKeyboard.java

private void handleCharacter(int primaryCode, int[] keyCodes) {
        if (getCurrentInputConnection() == null) {
            return;
        }
        if (isInputViewShown()) {
            if (mInputView.isShifted()) {
                primaryCode = Character.toUpperCase(primaryCode);
            }
        }

        getCurrentInputConnection().commitText(String.valueOf(Character.toChars(primaryCode)), 1);



    }

感谢酷,享受解决问题