从Custom IME向EditText添加图像

时间:2014-12-03 18:16:43

标签: android emoji ime custom-keyboard

我正在开发Android的自定义键盘,我遇到了一个问题。我需要能够从键盘输出ASCII字符(即∅,⌲,⌓等),或者能够从键盘上添加图像到选定的EditText。我知道这是可能的,因为Emoji用它们的键盘来做。他们找到了一种向任何EditText添加图像的方法,无论他们是否创建了EditText。

有没有人知道他们是如何完成这个的?

3 个答案:

答案 0 :(得分:1)

经过几个小时的博客,Stackoverflow和互联网的其他部分,我发现除非你拥有EditText,否则基本上不可能将自定义图像添加到EditText。

然而,一切都没有丢失。在查看了有关UTF-8,ASCII和其他字符集的文档之后,我发现我需要的所有字符都是UTF-8。我只需输出unicode值:

InputConnection inputConnection = getCurrentInputConnection();
inputConnection.commitText(text, 1);

它正确地出现在EditText中。其他键盘添加的所有字符(即股票Android,表情符号等)都出现在UTF-8字符集中。

答案 1 :(得分:0)

使用CompoundDrawables将图片添加到EditText。您可以通过android:drawableBottom android:drawableRight android:drawableLeft android:drawableTop通过XML添加它们。您还可以使用SpannablesEditText内显示内嵌文字的图片。请在此处Spannables和此处Displaying emoticons in Android

答案 2 :(得分:0)

我在一些研究中遇到过这个帖子,最后到了其他地方。是的,现在可以使用7.1中引入的新的 CommitContent API通过自定义IME将图像/ GIF发送到EditText,向后兼容,直到API级别13 - Honeycomb。

引用来自: https://developer.android.com/guide/topics/text/image-keyboard.html#how_it_works

enter image description here

  

使用Android 7.1(API级别25),Android SDK包含Commit   Content API,为IME提供发送图像的通用方式   和其他丰富的内容直接到应用程序中的文本编辑器。 API是   也可在v13支持库中获得,版本号为25.0.0。我们   建议使用支持库,因为它在设备上运行   早在Android 3.2(API Level 13),它包含帮助方法   这简化了实施。

我使用最新的环聊更新进行了测试,它确实有用!

示例代码:https://developer.android.com/about/versions/nougat/android-7.1-samples.html#img-kbd-ime

我已将主应用和IME应用代码合并到一个项目中,其位置为:https://github.com/satheeshwaran/ImageKeyboard-Android/tree/master

<强>更新

我使用此API发布了两个应用程序,我认为它们做得很好,

https://play.google.com/store/apps/details?id=com.theweekendparty.indianmemekeyboard

https://play.google.com/store/apps/details?id=com.theweekendparty.indiangifboardbollywood