gpt4 book ai didi

android - 文本在 EditText 中被 ImageSpan 弄乱了

转载 作者:塔克拉玛干 更新时间:2023-11-02 18:53:19 25 4
gpt4 key购买 nike

我正在构建一个简单的聊天应用程序,用户可以在其中发送文本和表情符号。我可以将文本和表情符号发送到另一部手机。我的问题是:

1.当我输入内容并添加表情符号时:

enter image description here

然后我就不能在图像之前和之后键入任何文本。我可以在“o”字母之前写。系统“看到”我输入的内容,所以即使我在笑脸后面输入“亲爱的”,我也看不到它,但 EditText 会注册它并发送消息:

enter image description here

2.当我只添加一个表情到Edittext然后删除它时,我无法输入任何内容,因为删除的表情出现了。它只出现一次,所以无论我键入多少个字符,EditText 看起来就像我删除表情符号之前一样,但发送的文本没有表情符号,就像所有三种情况一样。

3.当我在 EditText 中输入“something”然后在“some”后面插入一个表情:

enter image description here

然后我将光标放在表情符号后面,然后将其删除,剩下的是:

enter image description here

但是当我按下“发送”按钮时发送了正确的消息:

enter image description here

这就是表情的按钮监听器里面的东西(当我点击表情将它添加到EditText时这个方法被激活)。

ib_happy.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {

int cursorPosition = mOutEditText.getSelectionStart();
mOutEditText.getText().insert(cursorPosition, smileys[0]);
SpannableStringBuilder ssb = new SpannableStringBuilder(mOutEditText.getText());
ssb.setSpan(new ImageSpan(bitmapArray.get(0), ImageSpan.ALIGN_BASELINE), cursorPosition, cursorPosition+2, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
mOutEditText.setText(ssb, BufferType.SPANNABLE);
mOutEditText.setSelection(cursorPosition+2);
dialog_emoticon.dismiss();
}
});

最佳答案

我找到了解决方案。我所要做的就是将 Spannable.SPAN_INCLUSIVE_INCLUSIVE 更改为 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

关于android - 文本在 EditText 中被 ImageSpan 弄乱了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13867815/

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