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); 
    } 
}
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top