首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓:自定义键盘上的表情符号是keyLabel?

安卓:自定义键盘上的表情符号是keyLabel?
EN

Stack Overflow用户
提问于 2015-07-25 06:22:15
回答 1查看 775关注 0票数 1

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

\uxxxx不适用于U+10000和更高版本。表情符号从U+1F600开始。那么,如何将这个代码跨度更改为使用表情符号作为keyLabel呢?

代码语言:javascript
复制
<Row>
  <Key android:codes="-100" android:keyLabel="\u1F600"/>
  ... 
</Row>

我知道,这行不通。那么,在不使用keyIcon的情况下也可以这样做吗?我们很感激你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-22 08:08:08

你可以看到:

代码语言:javascript
复制
<resources>
    <array
        name="emoji_nature"
        format="string"
    >
        <!-- <item>1f415</item> -->
        <item>1f436</item>
        <item>1f429</item>

即在值、文件夹和

这个资源数组用于xml/emoji_nature.xml

代码:

代码语言:javascript
复制
<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 变更代码

代码语言:javascript
复制
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);



    }

感谢酷,享受解决问题

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31623642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档