将表情符号(表情符号图像)嵌入自定义软键盘android

时间:2014-12-22 13:52:02

标签: android android-softkeyboard android-input-method

我创建了一个自定义软键盘(IME),我们可以在其中添加自定义表情符号。

每当我尝试添加我的表情符号时。它会覆盖输入的最后一个文本。我的意思是它不会附加表情符号,除非它覆盖它。如何将表情符号添加到currentInputConnection

例如

i image write  hello image abcimage          ///where image represents emoji

它变成了

i image write hello image image

//我可以轻松地在空格后添加图像,或者我可以轻松地重复添加图像。

当我添加文字时,它会附加到表情符号,但是当我在输入一些文字后添加表情符号时,它会删除文本然后自己添加(表情符号图像)。

仅出于测试目的,我将表情符号代码移至键

问题代码

else if (primaryCode == Keyboard.KEYCODE_SHIFT) 
        {
        //  this.handleShift();

            //this.mComposing.append(getSmiledText(getApplicationContext(), ":)"));

             ImageGetter imageGetter = new ImageGetter() 
                {
                    public Drawable getDrawable(String source) {
                        Drawable d = getResources().getDrawable(R.drawable.e041);
                        d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
                        return d;
                    }
                };

                Spanned cs = Html.fromHtml("<img src='" + getResources().getDrawable(R.drawable.e041) + "'/>", imageGetter, null);

              //  getCurrentInputConnection().commitText(cs, 1);

               // this.mComposing.append(cs);


            //getCurrentInputConnection().commitText(getSmiledText(getApplicationContext(), ":)"), 1);


             getCurrentInputConnection().beginBatchEdit();


             getCurrentInputConnection().commitText(cs, 1);

             getCurrentInputConnection().endBatchEdit();


            //getCurrentInputConnection().setComposingText(cs, 1); // it is giving wrong 


        } 

并尝试了多种方法来解决它,一些尝试过的代码显示在评论中

简单的单词:我想将表情符号图像添加到文本中,但是当我将图像添加到文本时,它会删除书面文本,我该如何解决。 完整来源无法显示它很长。问我在课堂上是否需要任何方法

相关链接:

add custom image as Emoji in android

https://stackoverflow.com/questions/24100615/cannot-add-an-image-to-my-keyboard-service

Implementations of Emoji (Emoticon) View/Keyboard Layouts

先谢谢。

1 个答案:

答案 0 :(得分:1)

我也尝试了相同的但总是得到了#34; obj&#34; .Atlast我找到了解决方案试试这个。

不要添加drawable,只需按照这样的uniCodes添加表情符号。

getCurrentInputConnection()。commitText((CharSequence)&#34; \ ud83c \ udfb5&#34;,1);

它完美地为我工作。还从你的代码中删除了beginBatchEdit和endBatchEdit。

由于