22

在过去的 3 天里,我一直在尝试在默认的 android 消息视图中显示图形自定义表情符号。我已经成功地展示了我的自定义表情符号来代替钥匙。现在的问题是我试图在可跨度字符串生成器中显示一个可绘制对象。但是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 的默认消息视图上。任何帮助将不胜感激。

4

3 回答 3

1

可能这会有所帮助: 表情 - 键盘

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

于 2013-09-02T12:04:31.300 回答
0

也许你可以使用:

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

这对我来说可以。我创建了一个 CustomEditText 组件来简化这种转换。

于 2013-02-20T14:31:26.847 回答
0

我已经做到了

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

//但它会覆盖最后输入的文本在这里看到我的问题

于 2014-12-22T14:28:07.633 回答