Intereting Posts
Заполнение не работает на некоторых устройствах Как добавить N-уровень расширяемого меню в NavigationView android? Реагировать на собственный андроид не удалось загрузить пакет JS Внешняя SQLite Ошибка доступа к содержимому файла Панель состояния Android и панель действий Уведомление о состоянии строки состояния перед его отображением Приложение перестает работать, когда экран ложится спать Возможно ли установить Android Studio на ChromeBook? Потребитель закрыл входной канал или произошла ошибка. события = 0x8 Создание пользовательского информационного окна на картах Google V2 База данных onUpgrade – oldVersion – newVersion Как реализовать мою собственную схему URI на Android Существуют ли какие-либо инструменты для преобразования локализованного строкового файла Iphone в файл строковых ресурсов, который можно использовать в Android? Как показать индикатор выполнения в каждом элементе списка? Можно ли хранить ссылки на фрагмент в AsyncTask?

Текст перепутан с ImageSpan в EditText

Я создаю простое приложение для чата, где пользователь имеет возможность отправлять текст и смайлики. Я могу отправить текст и смайлики на другой телефон. Мои проблемы:

1. Когда я печатаю что-то и добавляю смайлик:

Введите описание изображения здесь

Тогда я не могу набирать текст прямо перед и сразу после изображения. Я могу написать перед буквой «o». Система «видит», что я печатаю, поэтому, даже если я набираю «Honey» после смайлика, я не вижу его, но EditText регистрирует его, и сообщение отправляется:

Введите описание изображения здесь

2. Когда я добавляю только смайлик в Edittext, я удаляю его , я ничего не могу набрать, потому что появляется удаленный смайлик. Он появляется только один раз, поэтому независимо от того, сколько символов я набираю, EditText выглядит как раз перед тем, как я удалю смайлик, НО текст отправляется без смайлика, как и во всех трех случаях.

3. Когда я ввожу «что-то» в EditText, тогда вставьте смайлик после «some»:

Введите описание изображения здесь

Затем я помещаю курсор после смайлика и удаляю его, вот что осталось:

Введите описание изображения здесь

Но правильное сообщение отправляется, когда я нажимаю кнопку «Отправить»:

Введите описание изображения здесь

Это то, что находится внутри кнопки прослушивания смайлика (этот метод активируется, когда я нажимаю смайлик, чтобы добавить его в 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(); } }); 

Solutions Collecting From Web of "Текст перепутан с ImageSpan в EditText"

Я нашел решение. Все, что мне нужно было сделать, это изменить Spannable.SPAN_INCLUSIVE_INCLUSIVE на Spannable.SPAN_EXCLUSIVE_EXCLUSIVE

Я бы добавил текстовый элемент для этого edittext и посмотрел, как пользователь набирает, таким образом я могу переместить изображения / установить текст / внести исправления / проверить ввод / etc.

 editText.addTextChangedListener(textWatcher); textWatcher = new TextWatcher() { public void afterTextChanged(Editable s) { //editText.doStuffHere //reposition your image/etc. } public void beforeTextChanged(CharSequence s, int start, int count, int after) { } public void onTextChanged(CharSequence s, int start, int before, int count) { } };