私はEditTextの中に顔文字を入れようとしています。私はそれを行うことができたし、うまく動作しますが、ソフトキーボードを使用してEditTextからこれらの絵文字を削除しようとすると問題が発生します。 1回の削除ボタンのクリックでこの操作を行うことはできません。新しいImageSpanを挿入するとimageIdが置き換えられますが、アイコンを削除しようとするとイメージを削除する前にすべてのimageId文字を削除する必要があります。EditText SpannableStringBuilderとImageSpanでうまく動作しません。
String fileName = "emoticon1.png";
Drawable d = new BitmapDrawable(getResources(), fileName);
String imageId = "[" + fileName + "]";
int cursorPosition = content.getSelectionStart();
int end = cursorPosition + imageId.length();
content.getText().insert(cursorPosition, imageId);
SpannableStringBuilder ss = new SpannableStringBuilder(content.getText());
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, cursorPosition, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
content.setText(ss, TextView.BufferType.SPANNABLE);
content.setSelection(end);
削除ボタンを1回クリックするだけで、絵文字を削除する必要があります。私を手伝ってくれますか?
ありがとうございます!
あなたの顔文字(f.e. 'HashMap')の開始位置と終了位置はどうですか?すべてのキャラクタを削除するには、ハッシュマップ内の顔文字の終わりであるかどうかを確認する必要があります。もしそうなら、全体を削除してください。 (ただし、顔文字の前に変更を加えなければなりません) – longilong