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