gpt4 book ai didi

android - Spannable 不显示图像

转载 作者:行者123 更新时间:2023-12-04 18:07:34 25 4
gpt4 key购买 nike

我有一个 TextView,我想在其中插入笑脸。我正在使用以下代码将笑脸插入 Spannable

private static final Map<String, Integer> emoticons = new HashMap<String, Integer>();

static {
emoticons.put(":)", R.drawable.smileyon);
emoticons.put(":-)", R.drawable.smileyon);

}

public Spannable getSmiledText(String text) {
SpannableStringBuilder builder = new SpannableStringBuilder(text);
if (emoticons.size() > 0) {
int index;
for (index = 0; index < builder.length(); index++) {
if (Character.toString(builder.charAt(index)).equals(":")) {
for (Map.Entry<String, Integer> entry : emoticons.entrySet()) {
int length = entry.getKey().length();
if (index + length > builder.length())
continue;
if (builder.subSequence(index, index + length).toString().equals(entry.getKey())) {
builder.setSpan(new ImageSpan(getContext(), entry.getValue()), index, index + length,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Log.v("CheckChat", "Found new smily ");
index += length - 1;
break;
}
}
}
}
}

Log.v("CheckChat", "Returning text " + builder);

return builder;
}


chatLine.setText(getSmiledText(chatmessage.getMessage()) + " "
+ DateUtil.timestampToTime(Integer.parseInt(chatmessage.getMessageTime())));

当我添加一些文本时,例如“你好:-)”,日志指出它找到了笑脸并且文本已正确返回......但是......没有插入笑脸?可绘制对象在那里,它是一个 png 文件。

编辑好的,所以我看到的文本与我输入的完全一样“你好:-)”所以看起来映射根本没有执行。所以 :-) 没有被替换为图像。

看了几个教程,但找不到解决方案,看来我是按照书上的内容做的。

感谢您的帮助。

最佳答案

但在我的例子中,我使用的是 fragment ,所以我使用了

text.setSpan(new ImageSpan(container.getContext(),R.drawable.image),0,0,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

而不是直接传递Drawable

text.setSpan(new ImageSpan(getResources().getDrawable(R.drawable.image)),0,1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

只是添加解决了 OP 问题的内容,正如 Fabio 所指出的那样,答案是

Drawable myIcon = context.getResources().getDrawable(entry.getValue());
myIcon.setBounds(0, 0, 60, 60);
spannable.setSpan(new ImageSpan(myIcon, ImageSpan.ALIGN_BOTTOM), matcher.start(), matcher.end(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

关于android - Spannable 不显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22956021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com