在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的默认消息视图。 任何帮助将不胜感激。

  • 软键盘仅在EditText焦点上显示一次
  • 防止软键盘被解雇
  • 我可以同时在状态栏后面有“adjustResize”软键盘行为和一个工具栏吗?
  • 如何确定Android中的当前IME?
  • 如何为Android制作弯曲的屏幕键盘
  • 没有EditText和检测按键的软键盘
  • Android软键盘从不出现在模拟器中
  • 如何更改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的文本在这里看到我的问题