Добавление пользовательских элементов управления в Commonsware RichEditText в Android

Создайте деятельность, состоящую из

1) текст редактирования (Commonsware RichEditText)

2) панель инструментов со следующими кнопками

Жирный, курсив, подчеркивание, зачеркивание, шрифт, выравнивание по центру, выравнивание по левому краю, выравнивание по правому краю, по ширине и т. д.

4) Кнопка Сохранить

Использование:

Пользователь вводит текст и редактирует его, выделяя текст целиком или его части. Эффекты применяются к выделенному тексту. Когда пользователь заканчивает редактирование текста в редакторе, он нажимает кнопку Сохранить. Все считывается из RichEditText и отправляется в базу данных для последующего использования с тегами и форматированием в html. Я использую следующий код для сохранения и извлечения.

Spanned s = Html.fromHtml("<i>Hi</i> There ! <b>how're you ?</b>");
et.setText(s);

//--save to string--
Editable e = et.getText();
String s2 = Html.toHtml(e);

//--restore from string--
Spanned s3 = Html.fromHtml(s2);
et.setText(s3);

src: Скопировать в буфер обмена с помощью библиотеки commonsware cwac-richedit

Проблема:

Мне нужно применить полужирный шрифт, курсив, подчеркивание, зачеркивание, шрифт, выравнивание по центру, выравнивание по левому краю, выравнивание по правому краю, по ширине и т. д. к выделенному тексту onClick() кнопки на панели инструментов, отличной от кнопки панели действий. Есть ли способ разместить весь вид, отображаемый на панели действий, когда выбор сделан в макете над RichEditText? Скажем, Horizontal LinearLayout или какие-то адаптивные макеты?

Было бы очень полезно, если бы кто-нибудь мог сказать, как добавить какой-либо эффект к выделенному тексту при нажатии кнопки. Я видел следующий метод, но не уверен, что такое значение T.

myRichEditText.applyEffect(effect, value);

Спасибо.


person Anoop Chandrika HarisudhanNair    schedule 06.07.2014    source источник


Ответы (1)


Есть ли способ разместить весь вид, отображаемый на панели действий, когда выбор сделан в макете над RichEditText?

Нет. Ваша панель инструментов должна находиться в основном пользовательском интерфейсе, например, над самим виджетом RichEditText.

Было бы очень полезно, если бы кто-нибудь мог сказать, как добавить какой-либо эффект к выделенному тексту при нажатии кнопки.

Цитирование документации:

applyEffect() изменяет текущий выбор, применяя или удаляя эффект (например, делая выделение жирным). Первый параметр — это применяемый эффект (например, RichEditText.BOLD). Второй параметр — это новое значение эффекта. Многие эффекты принимают логические значения, поэтому applyEffect(RichEditText.BOLD, true) выделяет текущее выделение жирным шрифтом.

FWIW, я планирую предложить стандартную панель инструментов для RichEditText, но вряд ли у меня будет возможность сделать это раньше этой осени.

person CommonsWare    schedule 06.07.2014
comment
Есть ли ситуация, когда нам нужно передать «false», чтобы добавить определенный эффект? - person Anoop Chandrika HarisudhanNair; 07.07.2014
comment
Есть ли способ добавить эти кнопки над RichEditText, кроме панели действий или панели действий? Я имею в виду панель инструментов. Я также думаю о плавающей панели инструментов над текстом, поэтому я и спрашиваю. (Извините за много комментариев, всего 5 минут на редактирование) - person Anoop Chandrika HarisudhanNair; 07.07.2014
comment
@AndroidKid: Есть ли ситуация, когда нам нужно передать «false», чтобы добавить определенный эффект? - когда вы хотите избавиться от него. Чтобы применить полужирный шрифт к текущему выделению, используйте applyEffect(RichEditText.BOLD, true). Чтобы удалить полужирный шрифт из текущего выделения, используйте applyEffect(RichEditText.BOLD, false). есть ли способ добавить эти кнопки над RichEditText - используйте вертикальный LinearLayout, чтобы удерживать панель инструментов и ваш RichEditText. Я думаю о плавающей панели инструментов - используйте RelativeLayout с панелью инструментов как более поздний дочерний элемент, чем RichEditText. - person CommonsWare; 07.07.2014
comment
есть ли способы получить панель инструментов из самого элемента управления? У меня уже есть несколько кнопок на панели действий. Элементы управления редактированием кажутся немного перегруженными. Вам также следует подумать о добавлении специального метода, такого как richEditText.getRichText(), для получения введенного текста со всем форматированием. - person Anoop Chandrika HarisudhanNair; 07.07.2014
comment
есть ли способы получить панель инструментов из самого элемента управления? -- в данный момент элемент управления не имеет панели инструментов. Даже когда я добавляю панель инструментов, это будет отдельный настраиваемый вид. Сегодня RichEditText использует режим действия (также известный как контекстная панель действий), а не панель инструментов View. Вам также следует подумать о добавлении специального метода, такого как richEditText.getRichText(), для получения введенного текста со всем форматированием — он уже есть. Он называется getText() и унаследован от EditText. - person CommonsWare; 07.07.2014