Я использую собственный класс EditText, который поддерживает ввод пространств изображений через пользовательский ввод для конкретного виджета и испытывает странную проблему. Когда интервал изображения отображается в конце строки, перенос на следующую строку иногда приводит к тому, что интервал изображения больше не отображается.EditText + ImageSpan исчезает при переносе на следующую строку
после того, как я закончу, набрав "не работает." редактирование текст появляется примерно так:
В основном, это кажется продолжительность изображения не должным образом обработана EditText, когда речь идет о перемещении на следующую строку в многострочном EditText а. Он просто невидим для пользователя после переноса. Я могу отложить содержимое второго изображения до тех пор, пока оно не будет выглядеть точно так же, как первое изображение (до «n»), и мы снова увидим интервал изображения.
Кто-нибудь знает, что я могу сделать, чтобы решить эту проблему? Это важный компонент, который я хотел бы оставить в своем приложении. Я также не могу отбросить один текст редактирования строки, многолинейная поддержка также имеет решающее значение.
Для воспроизводимости, вот мой код для добавления ImageSpan к моему редактирования текста:
public void appendSpannedText(String s){
if (textToDrawableMap == null || textToDrawableMap.isEmpty()
|| !textToDrawableMap.containsKey(s)) {
return;
}
// Acquire the mapped drawable
Drawable drawable = textToDrawableMap.get(s);
Editable editable = getText();
int start = getSelectionStart();
// Insert the a space at the start that's eaten by the image span
// being set.
editable = editable.insert(start, SPACE);
// Insert the new string at the starting point
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(editable);
// Create the span and set the new span to the appropriate range
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);
int nextIdx = start + 1;
spannableStringBuilder.setSpan(span,
start, nextIdx,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// Update the spanned text and the cursor
setText(spannableStringBuilder);
setSelection(nextIdx);
}
Я просто есть несколько иконок, которые пользователь может нажать и вставить'S промежуток изображение текста пользовательского редактирования с помощью spannable. Я использую сопоставление текстовых -> чертежей, которые поддерживаю, поэтому я знаю, какой из них следует использовать, когда пользователь нажимает определенную кнопку. Главное, если у вас есть обратная ссылка в редакторе, он может стать невидимым на новой строке при срабатывании.
Вы нашли решение? У меня та же проблема. Я хотел бы здесь решить это. – rawcoder064
@ rawcoder064 [link] (https://github.com/maxsav/spantest) –
Я решил проблему. Проблема заключалась в том, что в текстовом режиме вырезали первое и последнее пространство. Если и добавить символ вместо пространства, он будет разрешен. Спасибо, в любом случае – rawcoder064