Внедрение смайликов (смайликов изображений) на пользовательскую Android-клавиатуру

Я создал пользовательскую мягкую клавиатуру (IME), в которую мы можем добавить пользовательские эмодзи.

Всякий раз, когда я пытаюсь добавить свои смайлики к нему. он отменяет последний введенный текст. Я имею в виду, что он не добавляет смайлики, если он не отменяет его. Как я могу добавить Emoji в currentInputConnection

например

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

это становится

i image write hello image image

// и я могу легко добавить изображение после пробела, или я могу легко добавлять изображения.

когда я добавляю текст, он добавляется к смайликам, но когда я добавляю смайлики после ввода некоторого текста, он удаляет текст и затем добавляет его сам (изображение смайликов).

Просто для целей тестирования я поместил код Emoji в клавишу Shift

Код проблемы

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 


        } 

И пробовал несколько способов ее решить, некоторые пробные коды показаны в комментариях

Простые слова: я хочу добавить смайлик к тексту, но когда я добавляю изображение к тексту, он удаляет письменный текст, как я могу решить. полный источник не может быть показан, это долго. Спросите меня, если вам нужен какой-либо метод в моем классе

Ссылка по теме:

добавить пользовательское изображение в качестве Emoji в Android

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

Реализации Emoji (смайлик) Вид / раскладки клавиатуры

Заранее спасибо.

1 ответ

Я также пытался на то же самое, но всегда получал "obj". Наконец я нашел решение, попробуйте это.

Вместо добавления рисунков просто добавьте смайлики по их юникодам, как это..

getCurrentInputConnection (). commitText ((CharSequence) "\ ud83c \ udfb5", 1);

Он отлично работает для меня. А также удалите beginBatchEdit и endBatchEdit из вашего кода.

Спасибо

Другие вопросы по тегам