Подтвердить что ты не робот

Реализация текстового редактора в Android?

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

4b9b3361

Ответ 2

Я бы, вероятно, расширил как EditText, так и TableLayout или, по крайней мере, в конечном итоге использовал большую часть своего источника, если бы были достаточно большие изменения Мне нужно было сделать.

Ответ 3

Можете ли вы сделать следующее:

  • Вручную хранить содержимое в EditText как свою собственную модель (т.е. разделяя и поддерживая документ контента и атрибуты представления как отдельные сущности).
  • Переопределите метод рендеринга (или рисования) для создания пользовательского макета на частях документа содержимого (часть вашей модели), которые обрабатывают нетекстовые символы (например, пули с определенным атрибутом).

Мне кажется, что если вам нужно гадать с макетом, лучше ли вам писать это с нуля самостоятельно. Из того, что я помню, текст Edit (и текстовый редактор richt) отлично подходит для всего, где вы являетесь чистым текстом.

Ответ 4

Существует текстовый редактор с расширенным исходным кодом EditText, называемый android-richtexteditor, но код был необъяснимо удален в r5. код все еще присутствует в r4; просто используйте svn, чтобы проверить r4 или ранее, чтобы получить к нему доступ. Код, как представляется, поддерживает курсив, подчеркивание, выбор цвета, размер текста и т.д.

Также ответил на эти вопросы: 1, 2

Ответ 7

Проверьте это приложение с открытым исходным кодом Wordpress mobile для android.It имеет очень перспективный Richtexteditor на основе Edittext.

Вы можете скачать исходный код здесь

Спасибо