RichTextEdit с разноцветным текстом?
Как мне создать RichTextEdit
используя RIM 4.5 API, который содержит текст с несколькими цветами?
Например, я хочу создать RichTextEdit
следующее:
- Текст "Привет мир BB"
- "Привет" должен быть синим
- "BB мир" должен быть красным
- "BB" должен быть
ITALIC
- "Привет" должен быть
BOLD
Основная проблема - получить цвета, а не жирный и курсив.
Я пытался переопределить RichTextEdit.paint
функция, но это форматирует цвет всей строки, а не только ее подстроки!
Вот код, который я реализовал, чтобы сделать текст жирным и курсивом и переопределить рисование, чтобы изменить цвет всей строки:
public final class RichTextFieldSample extends UiApplication
{
public static void main(String[] args)
{
RichTextFieldSample theApp = new RichTextFieldSample();
theApp.enterEventDispatcher();
}
public RichTextFieldSample()
{
String richText = "This is how you create text with formatting!!!";
Font fonts[] = new Font[3];
int[] offset = new int[4];
byte[] attribute = new byte[3];
fonts[0] = Font.getDefault();
fonts[1] = Font.getDefault().derive(Font.BOLD);
fonts[2] = Font.getDefault().derive(Font.BOLD | Font.ITALIC);
offset[0] = 0;
attribute[0] = 2;
offset[1] = 4;
attribute[1] = 0;
offset[2] = 33;
attribute[2] = 1;
offset[3] = richText.length();
RichTextField rtField = new RichTextField
(richText, offset, attribute, fonts,
RichTextField.USE_TEXT_WIDTH) {
protected void paint(Graphics graphics) {
graphics.clear();
graphics.setColor(0x0000FF);
super.paint(graphics);
}
};
MainScreen mainScreen = new MainScreen();
mainScreen.setTitle(new LabelField
("RichTextFieldSample Sample",
LabelField.ELLIPSIS | LabelField.USE_ALL_WIDTH));
mainScreen.add(rtField);
pushScreen(mainScreen);
}
}
1 ответ
К сожалению, нет простого ответа на этот вопрос. Согласно этому сообщению, RichTextField не поддерживает несколько цветов (несмотря на наличие getForegroundColors
метод).
Может быть возможно расширить RichTextField для поддержки нескольких цветов, но с учетом необходимого объема работы, скорее всего, будет проще реализовать свой собственный Field
с нуля.