Изменить цвет определенного текста только в текстовом поле BlackBerry - PullRequest
4 голосов
/ 22 мая 2009

Как изменить цвет определенного текста только в текстовом поле для приложений Blackberry?

Ответы [ 3 ]

6 голосов
/ 25 мая 2009

К сожалению, ответ на ваш вопрос - нет редактируемого элемента управления текстовым полем, который бы позволял вам вообще менять цвет шрифта. Ответ @Mark Novakowski - это стандартный способ обойти это, но он поменяет весь текст на один цвет.

Если вы не беспокоитесь о поддержке клавиатуры SureType в стиле Pearl, вы можете переопределить keyChar в ActiveRichTextField и вручную добавить символы в текст в ActiveRichTextField.

Для полей SureType ответ еще хуже - у вас нет низкоуровневого доступа к API-интерфейсам SureType (для правильной обработки всплывающего текста с предиктором) для телефонов не qwerty (серия Pearl), поэтому вам придется прибегнуть к настоящей хитрости, чтобы получить полностью настраиваемое текстовое поле для правильной работы на этих устройствах. Это может быть связано с необходимостью иметь несколько полей EditField, расположенных в менеджере, например, с. один EditField переопределен для показа прочитанного (как в ответе Маркса). Хитрость в том, чтобы динамически создавать и добавлять текстовые поля по мере необходимости.

Да, иногда RIM API делает простые вещи легкими, а сложные - почти невозможными.

4 голосов
/ 23 мая 2009

Как сказал Фост в своем комментарии, класс TextBox не очень гибок в плане изменения внешнего вида. Даже внешний вид многих классов «Поля» тоже довольно трудно изменить.

Однако, если вы обладаете некоторой гибкостью и можете использовать поле типа EditField (или его вариант) вместо TextBox, то это просто случай переопределения метода рисования. Что-то вроде:

protected void paint(Graphics graphics) {
    graphics.setColor(Color.RED);
    super.paint(graphics);
}
4 голосов
/ 23 мая 2009

Вы проверили ActiveRichTextField? Я использовал только RichTextField, но похоже, что ActiveRichTextField позволяет вам указывать цвета для текстовых областей в дополнение к шрифтам и форматированию. Для запуска этих полей требуется немного настройки, но посмотрите javadoc для RichTextField, это дает довольно хорошее объяснение.

Вот пример кода:

int offsets[] = new int[]{0, 5, 11};
Font[] fonts = new Font[]{Font.getDefault(), Font.getDefault()};
int bg[] = new int[]{Color.WHITE, Color.WHITE};
int fg[] = new int[]{Color.BLACK, Color.GREEN};
byte attributes[] = new byte[]{0, 1};

add(new ActiveRichTextField("Hello world", offsets, attributes, fonts, fg, bg, 0));
...