Android. Текстовые интервалы исчезают при нажатии на клавишу Backspace и ведут себя странно

Мне нужно реализовать wysiwyg EditText, и я столкнулся с проблемой в самом начале. Поэтому я добавил следующий код в onTextChanged:

int textLen = textWord.getText().length();
if (s.length() > textWordBefore.length()) {
    if (boldToggle == true) {
        textWord.getText().setSpan(new StyleSpan(android.graphics.Typeface.BOLD), textLen-1, textLen, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    }
}

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

<b>a</b><b>b</b><b>c</b>

Затем я нажимаю пробел, и он меняется на это:

<b>abc</b>

Но когда я нажимаю клавишу Backspace в первый раз, только последний символ слова остается жирным. И через еще раз все слово становится нормальным (то есть не жирным шрифтом). Я много гуглил, пытался повторно применить диапазон, когда нажата клавиша возврата (если текст после изменения короче). Я попытался изменить тип диапазона на INCLUSIVE и т. Д. Я попробовал DroidWriter, и он работает так же, как и в случае возврата.

Это также работает не так, как предполагалось, если я включаю жирный шрифт в середине не жирного слова и наоборот.

Мне действительно нужно решение в ближайшее время, я был на нем в течение нескольких дней. Заранее спасибо!

0 ответов

Другие вопросы по тегам