Зачеркнутый текст не сохраняется в базе данных SQLite - PullRequest
0 голосов
/ 07 декабря 2018

Я столкнулся с проблемой, что при использовании StrikethroughSpan зачеркнутый текст не сохраняется в базе данных SQLite моего приложения.Однако он отлично работает с другими диапазонами, особенно с StyleSpan и UnderlineSpan - текст, выделенный полужирным шрифтом / курсивом / подчеркнутым, корректно сохраняется в БД и отображается CursorAdapter.Я использую HtmlCompat для этой цели.Но зачеркнутый текст отображается без форматирования, как простой текст.

Мое веб-исследование по этому вопросу не дало никаких результатов.В чем причина такого поведения и есть ли способ решить проблему?

Мой код для сохранения составного текста в БД:

ContentValues values = new ContentValues();
        NoteCursorAdapter cursorAdapter = new NoteCursorAdapter(this, null);

        String newHtmlString = HtmlCompat.toHtml(noteText, TO_HTML_PARAGRAPH_LINES_CONSECUTIVE);

        values.put(NoteEntry.COLUMN_NOTE_TEXT, newHtmlString);

в активности:

@Override
public void bindView(View view, Context context, Cursor cursor) {
            ...
        String htmlFormString = cursor.getString(noteBitmapColumnIndex);
        Spanned spannedText = HtmlCompat.fromHtml(htmlFormString, FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE);
        noteBitmap.setText(spannedText);
}

в CursorAdapter:

@Override
public void onLoadFinished(...) {
    ...

    htmlString = cursor.getString(textColumnIndex);
    realText = HtmlCompat.fromHtml(htmlFormString, FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE);    
    mNoteText.setText(realText);

В HTML-строке, которая помещается в ContentValues ​​(newHtmlString), отображаются соответствующие теги HTML:

I/System.out: <p dir="ltr"><b><b><strike>Word</strike></b></b></p>

, но форматирование не отображается.

1 Ответ

0 голосов
/ 07 декабря 2018
Класс

Html не слишком хорошо документирован с точки зрения поддерживаемых тегов.Проверено его исходный код с Android 5 и Android 9. Версия Android 9 поддерживает зачистку в обе стороны ( ref ), в то время как Android 5 только выводит ее, но не читает ее в fromHtml() ()исх ).Не просматривал, когда именно это было изменено.

Вы, вероятно, можете обойти это, предоставив обработчик пользовательских тегов для fromHtml.Вот пример: Android: Как использовать Html.TagHandler?

...