2009-07-09 18 views

Antwort

9

Hier ist ein Beitrag, die eine ResponseLabelField hat die Labelfield und zeigt sich, wie die Schrift setzen: http://supportforums.blackberry.com/rim/board/message?board.id=java_dev&thread.id=37988

Hier ist ein kurzer Code-Schnipsel für Sie:

LabelField displayLabel = new LabelField("Test", LabelField.FOCUSABLE) 
    { 
     protected void paintBackground(net.rim.device.api.ui.Graphics g) 
     { 
      g.clear(); 
      g.getColor(); 
      g.setColor(Color.CYAN); 
      g.fillRect(0, 0, Display.getWidth(), Display.getHeight()); 
      g.setColor(Color.BLUE);    
     } 
    }; 

    FontFamily fontFamily[] = FontFamily.getFontFamilies(); 
    Font font = fontFamily[1].getFont(FontFamily.CBTF_FONT, 8); 
    displayLabel.setFont(font); 

Jemand korrigiert mich wenn ich bin falsch, aber ich glaube, dass verschiedene Schriftarten ausgewählt werden, indem ein anderer Index in das Array fontFamily verwendet wird.

EDIT: Und hier ist ein Test-App Sie wechseln zwischen Schriftarten verwenden können: http://blackberry-digger.blogspot.com/2009/04/how-to-change-fonts-in-blackberry.html

21

Sie können nur LabelField.setFont verwenden. Wenn Sie dies nicht explizit für das Beschriftungsfeld tun, verwendet das Feld die Schriftart, die von seinem Manager verwendet wird (und so weiter aufwärts in der Hierarchie).

Es gibt mehrere Möglichkeiten, eine Schriftart zu erhalten. Eine davon ist eine aus einer bestehenden Schrift abzuleiten (in diesem Fall ist mir eine fette Version der Standard-Schriftart erhalten):

LabelField labelField = new LabelField("Hello World"); 
Font myFont = Font.getDefault().derive(Font.BOLD, 9, Ui.UNITS_pt); 
labelField.setFont(myFont); 

Die andere sind eine bestimmte Schriftfamilie zu bekommen und eine Schrift aus, dass ableiten (hier eine 12 pt kursiv bekommen):

LabelField labelField = new LabelField("Hello World"); 
FontFamily fontFamily = FontFamily.forName("BBCasual"); 
Font myFont = fontFamily.derive(Font.ITALIC, 12, Ui.UNITS_pt); 
labelField.setFont(myFont); 

ein paar Dinge zu beachten: benutzte ich UNITS_pt (Punkte) statt UNITS_px (Pixel). Dies ist im Allgemeinen eine gute Idee, da BlackBerry-Geräte hinsichtlich Bildschirmgröße und Auflösung (DPI) recht unterschiedlich sind und die Verwendung von Punkten ein einheitlicheres Erscheinungsbild der Geräte ermöglicht, anstatt dass Ihr Text auf einem Bold oder 8900 (oder sehr groß) winzig aussieht eine Kurve oder eine Perle).

Auch im zweiten Beispiel kann forName eine ClassCastException auslösen, die Sie fangen müssen (es ist eine geprüfte Ausnahme), wird aber nie tatsächlich gemäß den Javadocs geworfen. Wenn Sie einen unbekannten Namen angeben, wird dieser auf einen anderen zurückfallen Schriftfamilie.

Verwandte Themen