Мне интересно, есть ли хорошие варианты для реализации расширенного текстового редактора в 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 должны дать мне контроль надпуля внешности.Расширение LeadingMarginSpan должно помочь мне в нумерованном списке.
Что касается таблицы, мой первоначальный план состоит в том, чтобы расширить LineBackgroundSpan и нарисовать все границы таблицы в переопределении drawBackground.Однако мне все еще нужно выяснить, как расположить весь текст в ячейках таблицы и правильно обрабатывать перемещение и выделение каретки.Предложения?