RichTextEdit con testo multicolore?
-
02-10-2019 - |
Domanda
Come si crea un RichTextEdit
utilizzando RIM 4.5 API che contiene il testo con i colori multipli?
Per esempio io voglio creare un RichTextEdit
come segue:
- Il testo è "mondo Ciao BB"
- "Ciao" dovrebbe essere blu
- "mondo BB" dovrebbe essere Red
- "BB" dovrebbe essere
ITALIC
- "Ciao" dovrebbe essere
BOLD
Il problema principale è ottenere i colori, non il grassetto e corsivo.
Ho provato l'override funzione RichTextEdit.paint
, ma questo formati il ??colore l'intera stringa, non solo una stringa di esso!
Ecco il codice ho implementato per rendere il testo in grassetto e corsivo e ignorando la vernice per cambiare l'intero colore stringa:
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);
}
}
Soluzione
Risposta Purtroppo non facile a questo. Secondo questo post , RichTextField non supporta più i colori (nonostante la presenza di un metodo getForegroundColors
).
Può essere possibile estendere RichTextField per supportare più colori, ma con la quantità di lavoro necessario, sarebbe molto probabilmente più facile da implementare il proprio Field
da zero.