在Android键盘中显示自定义表情符号

SoH*_*SoH 21 java keyboard android emoticons

我一直在尝试过去3天在默认的android消息视图中显示图形自定义图释.我已经成功地显示了我的自定义表情符号来代替键.现在的问题是我试图在spanable字符串构建器中显示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);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了不同的方法以某种方式适合drawable但它只是不会显示在android的默认消息视图.任何帮助将受到高度赞赏.

ifl*_*rit 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;
    }
};
Run Code Online (Sandbox Code Playgroud)

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