Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在自定义输入法中使用图像_Android_Android Softkeyboard_Ime_Soft Keyboard - Fatal编程技术网

Android 在自定义输入法中使用图像

Android 在自定义输入法中使用图像,android,android-softkeyboard,ime,soft-keyboard,Android,Android Softkeyboard,Ime,Soft Keyboard,我一直在尝试实现一个自定义软键盘(IME),它包含并输出按键图标。想想表情符号。我已经剥皮的关键,但注入选定的可绘制到字符串生成器已被证明是困难的。我决定实现自己的ImageGetter,以便控制Html.fromHtml()返回的内容。fromHtml方法继续充当返回null的角色,即使我知道drawable不是null 任何帮助都将不胜感激 我基于这个项目的软键盘样本。我将文件SoftKeyboard.java作为 public class SoftKeyboard extends Inpu

我一直在尝试实现一个自定义软键盘(IME),它包含并输出按键图标。想想表情符号。我已经剥皮的关键,但注入选定的可绘制到字符串生成器已被证明是困难的。我决定实现自己的ImageGetter,以便控制Html.fromHtml()返回的内容。fromHtml方法继续充当返回null的角色,即使我知道drawable不是null

任何帮助都将不胜感激

我基于这个项目的软键盘样本。我将文件SoftKeyboard.java作为

public class SoftKeyboard extends InputMethodService 
    implements KeyboardView.OnKeyboardActionListener 
此类实例化对象mComposing,用于存储从软键盘输入到编辑框中的文本

private StringBuilder mComposing = new StringBuilder();
我想我可以将图像作为一个跨距附加到StringBuilder并以这种方式显示图像。这里发生的情况是,显示的是一个带有“obj”文本的白色正方形,而不是所选图标,这意味着getDrawable()返回null

我尝试了一些关于边界的事情,但我不确定我是否接近了边界,或者我是否走错了道路

在onCreate中声明我的可绘图:

 mHangingDrawable = getResources().getDrawable(R.drawable.hanging_tiny);
 mHangingDrawable.setBounds(0, 0, mHangingDrawable.getIntrinsicWidth(), mHangingDrawable.getIntrinsicHeight());
在handleCharacter(int,int[])中,我为自己映射的代码编写了这个捕获

else if (primaryCode == 50) {
        String htmlSource = "<img src='hanging_small' />";
        ImageGetter ig = new ImageGetter(){

            @Override
            public Drawable getDrawable(String source) {


                return mHangingDrawable;
            }

        };
        Spanned htmlSpan = Html.fromHtml(htmlSource, ig, null);
        mComposing.append(htmlSpan);

        getCurrentInputConnection().commitText(mComposing, 1);
else if(primaryCode==50){
字符串htmlSource=“”;
ImageGetter ig=新ImageGetter(){
@凌驾
公共可绘制getDrawable(字符串源){
返回mHangingDrawable;
}
};
跨距htmlSpan=Html.fromHtml(htmlSource,ig,null);
mComposing.append(htmlSpan);
getCurrentInputConnection().CommitteText(mComposing,1);
}


这篇关于的文章很有用。

什么是
mComposing
?我已经更新了这个问题以包含更多信息。