Frage

Wie erstelle ich eine RichTextEdit mit RIM 4.5 API, dem Text mit mehreren Farben enthält?
Zum Beispiel möchte ich eine RichTextEdit wie folgt erstellen:

  • Der Text ist "Hallo BB Welt"
  • "Hallo" sollte blau
  • "BB Welt" sollte sein rot
  • "BB" sollte ITALIC
  • sein
  • "Hallo" sollte BOLD
  • sein

Das Hauptproblem ist, Farben bekommt, nicht die fett und kursiv.
Ich habe zwingende RichTextEdit.paint Funktion versucht, aber diese Formate der Farbe der ganzen Reihe, nicht nur einen Teil davon!

Hier ist der Code, den ich implementiert den Text fett und kursiv zu machen und die Farbe überschreibt die gesamte Zeichenfolge Farbe zu ändern:

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); 
    } 
}
War es hilfreich?

Lösung

Leider keine einfache Antwort auf diese. Nach

scroll top