2010-11-08 32 views
1

Je ne peux pas aligner du texte sur l'écran BlackBerry. J'ai essayé d'utiliser un LabelField ou un RichTextField mais le texte ne s'aligne pas comme je le souhaite. Il est aligné horizontalement et caché dans l'écran. Je veux que le texte se place sur la ligne suivante, lorsqu'il atteint la fin de l'écran horizontalement, plutôt que de se cacher. Voici mon code -Enveloppe de texte BlackBerry

import net.rim.device.api.ui.Color; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.FieldChangeListener; 
import net.rim.device.api.ui.Font; 
import net.rim.device.api.ui.Graphics; 
import net.rim.device.api.ui.Ui; 
import net.rim.device.api.ui.UiApplication; 
import net.rim.device.api.ui.component.LabelField; 
import net.rim.device.api.ui.component.RichTextField; 
import net.rim.device.api.ui.component.SeparatorField; 
import net.rim.device.api.ui.container.HorizontalFieldManager; 
import net.rim.device.api.ui.container.MainScreen; 
import net.rim.device.api.ui.container.VerticalFieldManager; 

public class DetailBloodBank extends MainScreen 
{ 
    String resultData = "", location = "", phoneNumber = ""; 
    LabelField bloodBankName, locationLabel, phoneNumLabel; 
    String bloodBank = ""; 
    LabelField locationDetail, phoneNumDetail; 

    public DetailBloodBank(String data) { 
     super(NO_VERTICAL_SCROLL); 
     int height = Display.getHeight(); 
     int widhth = Display.getWidth(); 

//SizedVFM horizontalFieldManager = new SizedVFM(widhth,height); 
     HorizontalFieldManager horizontalFieldManager = new HorizontalFieldManager(HorizontalFieldManager.NO_VERTICAL_SCROLL) 
     { 
      protected void paint(Graphics g) { 
       g.setBackgroundColor(Color.BLACK); 
       g.clear(); 
       super.paint(g); 
      } 
     }; 
     //setBanner(horizontalFieldManager); 
     resultData = data; 
     System.out.println(resultData); 
     bloodBankName = new LabelField(resultData) 
     { 
      public void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 

     Font font = Font.getDefault().derive(Font.BOLD, 8, Ui.UNITS_pt); 
     bloodBankName.setFont(font); 
     locationLabel = new LabelField("Location") 
     { 
      public void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 
     Font font2 = Font.getDefault().derive(Font.BOLD, 8, Ui.UNITS_pt); 
     locationLabel.setFont(font2); 
     phoneNumLabel = new LabelField("Phone Number") 
     { 
      public void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 
     Font font3 = Font.getDefault().derive(Font.BOLD, 8, Ui.UNITS_pt); 
     phoneNumLabel.setFont(font3); 
     DBHelpers dbh = new DBHelpers(); 

     dbh.retrieveDetails(resultData); 
     location = dbh.getLocation(); 
     phoneNumber = dbh.getPhoneNumber(); 
     dbh.getConnectionClose(); 
     phoneNumDetail = new LabelField(phoneNumber) 
     { 
      public void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 
     Font font4 = Font.getDefault().derive(Font.PLAIN, 6, Ui.UNITS_pt); 
     phoneNumDetail.setFont(font4); 

     locationDetail = new LabelField(location) 
     { 
      public void paint(Graphics g) { 
       g.setColor(Color.WHITE); 
       super.paint(g); 
      } 
     }; 
     Font font5 = Font.getDefault().derive(Font.PLAIN, 6, Ui.UNITS_pt); 
     locationDetail.setFont(font5); 
     final SeparatorField sepfield2 = new SeparatorField(SeparatorField.LINE_HORIZONTAL | Field.USE_ALL_WIDTH) 
     { 
      protected void paint(Graphics g) { 
       g.setBackgroundColor(Color.WHITE); 
       g.clear(); 
       super.paint(g); 
      } 

      protected void layout(int maxWidth, int maxHeight) { 
       int width = Display.getWidth(); 
       int height = 25; //height of the manager 
       super.layout(1250, 15); 
      } 
     }; 
     final VerticalFieldManager verticalFieldManager = new VerticalFieldManager(NO_HORIZONTAL_SCROLL); 


     verticalFieldManager.add(locationLabel); 
     verticalFieldManager.add(locationDetail); 
     final VerticalFieldManager verticalFieldManager2 = new VerticalFieldManager(NO_HORIZONTAL_SCROLL); 

     verticalFieldManager2.add(phoneNumLabel); 
     verticalFieldManager2.add(phoneNumDetail); 

     VerticalFieldManager routeManager2 = new VerticalFieldManager() 
     { 
      protected void sublayout(int width, int height) { 
       layoutChild(bloodBankName, getPreferredWidth(), getPreferredHeight()); 
       layoutChild(sepfield2, getPreferredWidth(), getPreferredHeight()); 

       layoutChild(verticalFieldManager, getPreferredWidth(), getPreferredHeight()); 
       layoutChild(verticalFieldManager2, getPreferredWidth(), getPreferredHeight()); 

       setPositionChild(bloodBankName, 5, 15); 
       setPositionChild(sepfield2, 0, 35); 

       setPositionChild(verticalFieldManager, 0, 72); 

       int y = verticalFieldManager.getHeight(); 
       System.out.println(y); 
       setPositionChild(verticalFieldManager2, 0, y + 90); 


       super.setExtent(width, height); 
      } 
     }; 
     routeManager2.add(bloodBankName); 
     routeManager2.add(sepfield2); 

     routeManager2.add(verticalFieldManager); 
     routeManager2.add(verticalFieldManager2); 

     horizontalFieldManager.add(routeManager2); 
     add(horizontalFieldManager); 
    } 
} 
+0

Quelle version de BBOS ciblez-vous? –

+0

RichTextField fait ce que vous recherchez par défaut. Il doit y avoir quelque chose d'autre qui se passe. Pouvez-vous fournir plus de détails ou de code? – Fostah

+0

@ Micheal Donohue hey j'utilise BBOS 5.0 – vik

Répondre

2

Le problème est avec votre logique de mise en page routeManager2.

layoutChild(bloodBankName, getPreferredWidth(), getPreferredHeight()); 

La largeur préférée de la LabelField ou RichTextField va être la largeur de la chaîne qui lui est associée dans la taille de la police en cours. Il préférerait montrer tout sur une seule ligne si possible. Ainsi, au lieu de passer sa préférence, passez la largeur fournie à sublayout (int, int).

layoutChild(bloodBankName, width, getPreferredHeight()); 

Espérons que cela aide.