在Android键盘上显示自定义图释

我一直在尝试过去三天,在默认的Android消息视图中显示graphics化的自定义图释。 我已经成功地显示了我的自定义表情符号的位置。 现在的问题是,我试图显示一个可伸缩的string生成器中的drawable。 但drawable只是不出现在键盘上。 这是迄今为止的代码:

SpannableString ss = new SpannableString(" "); Drawable d = getResources().getDrawable(R.drawable.a); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); // ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE); ImageSpan span = new ImageSpan(d); // ss.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); mComposing.append(":"); mComposing.setSpan(new ImageSpan(d), 0,1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); getCurrentInputConnection().commitText(mComposing, 1); 

我已经尝试了不同的方法来适应绘制,但它只是不会显示在android的默认消息视图。 任何帮助将不胜感激。

Solutions Collecting From Web of "在Android键盘上显示自定义图释"

可能会有帮助: 表情符号键盘

另请参阅: 表情符号(表情符号)视图/键盘布局的实现

也许你可以使用:

String txt = "<img src=\"" + resourceID + "\"/>"; 生成一个HTML标签,然后

Spanned spanned = Html.fromHtml(txt, emojiGetter, null);
editTextObj = setText(spanned,BufferType.SPANNABLE);

emojiGetter在哪里

 private ImageGetter emojiGetter = new ImageGetter() { public Drawable getDrawable(String source){ int id = getResources().getIdentifier(source, "drawable", context.getPackageName()); Drawable emoji = getResources().getDrawable(id); int w = (int)emoji.getIntrinsicWidth() ; int h = (int)emoji.getIntrinsicHeight() ; emoji.setBounds(0, 0, w, h); return emoji; } }; 

这对我来说可以。 我已经创build了一个CustomEditText组件来简化这个转换。

我已经实现了这样做

  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); 

//但是它覆盖了最后input的文本在这里看到我的问题