我一直在尝试过去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);
我尝试过不同的方法以某种方式适合drawable但它只是不会显示在android的默认消息视图上。任何帮助都将受到高度赞赏。
答案 0 :(得分:1)
答案 1 :(得分: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组件来简化这种转换。
答案 2 :(得分: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);
//但它会覆盖上次输入的文字,请参阅my question here