Мне интересно, есть ли какие-нибудь хорошие варианты для реализации редактора форматированного текста в Android. Обратите внимание, я говорю о редакторе форматированного текста, который можно использовать в приложении Android, а не о редакторе, встроенном в веб-страницу с использованием HTML и Javascript.
Мои требования:
Как видите, это довольно много что-то очень похожее на типичный элемент управления RichEdit в Windows.
Вот некоторые усилия (исследование и создание прототипов), которые я сделал до сих пор:
Я попытался использовать элемент управления WebView для загрузки фрагмента HTML один . Контент становится редактируемым, и, поскольку это HTML, я полагаю, он может удовлетворить большинство моих требований. Но у него есть несколько проблем:
Я пробовал использовать элемент управления EditText. Кажется, он поддерживает некоторый уровень редактирования форматированного текста (цвет, шрифты, полужирный, курсив, подчеркивание, встроенные изображения, маркированные списки). Но я все еще не могу понять, как я могу реализовать следующие требования:
Кстати, я видел, что существует несколько классов * Span, но я не уверен, могут ли они помочь ... И http: // developer .android.com не предоставляет много полезной информации о них.
Итак, Могу ли я расширить EditText и добавить новые функции? Или надо делать что-то с нуля - расширять View и реализовывать все самостоятельно? Что касается более позднего варианта (расширение представления), я даже не знаю, как показать текстовую вставку и мигать ею, не говоря уже о перемещении каретки при вводе пользователем.
Я в отчаянии ... Есть подсказки?
Спасибо!
-Tony
После некоторого дальнейшего расследования, похоже, что расширение EditText было бы моим лучшим выбором. Я каким-то образом придумал, как использовать эти классы Span, и полагаю, что смогу выполнять большинство трюков, используя (расширяя) их.
Например, расширение BulletSpan и переопределение drawLeadingMargin должно дать мне контроль над внешним видом маркеров. . Расширение LeadingMarginSpan должно помочь мне в нумерованном списке.
Что касается таблицы, Мой первоначальный план - расширить LineBackgroundSpan и нарисовать все границы таблицы в переопределении drawBackground. Однако мне все еще нужно выяснить, как разместить весь текст в ячейках таблицы и правильно обрабатывать перемещение и выделение курсора. Предложения?