2012-04-23 24 views
0

私はこの画像のようなUIを作りたいと思いますhttp://i.stack.imgur.com/bB8UM.png 。私は垂直と水平のフィールドマネージャーのような基本的なマネージャーを使用します。しかし、私の水平のマネージャーは働いていません。 2人ではなくフィールドマネージャー。その理由は何ですか?どこが間違っていますか?ブラックベリーフィールドマネージャー(水平および垂直)

これは私が

package mypackage; 

import net.rim.device.api.ui.*; 
import net.rim.device.api.ui.component.*; 
import net.rim.device.api.ui.container.*; 
import net.rim.device.api.system.*; 

class TestScreen extends MainScreen{ 

    private VerticalFieldManager verticalManager; 
    private BitmapField myBitmapField,tipOfTheDay,completeBitmapField,top30BitmapField; 
    private FooterText mTextField; 

    TestScreen() 
    {  
     super(NO_VERTICAL_SCROLL); 

     verticalManager = new VerticalFieldManager(Manager.VERTICAL_SCROLL|Manager.VERTICAL_SCROLLBAR) 
     { 
      public void paint(Graphics graphics) 
      { 
       graphics.setBackgroundColor(0x00000000); 
       graphics.clear(); 
       super.paint(graphics); 
      }    
      protected void sublayout(int maxWidth, int maxHeight) 
      { 
       int width = Display.getWidth(); 
       int height = Display.getHeight(); 
       super.sublayout(width, height); 
       setExtent(width, height); 
      } 
     }; 

     Bitmap logoBitmap = Bitmap.getBitmapResource("mybitmap1.png"); 
     myBitmapField = new BitmapField(logoBitmap, Field.FIELD_HCENTER); 

     verticalManager.add(myBitmapField); 

     Bitmap mytipOfTheDay = Bitmap.getBitmapResource("tipoftheday.png"); 

     verticalManager.add(tipOfTheDay = new BitmapField(mytipOfTheDay,Display.getWidth())); 
     String text = "Lorem ipsum dolor sit amet, consectetuer \n" 
      + "adipiscing elit, sed diam nonummy nibh euismod \n" 
      + "tincidunt ut laoreet dolore magna aliquam erat \n " 
      + "volutpat. Ut wisi enim ad minim veniam, quis \n" 
      + "nostrud exerci tation ullamcorper suscipit \n" 
      + "lobortis nisl ut aliquip ex ea commodo consequat. \n" 
      + "Duis autem vel eum iriure dolor in hendrerit in \n"; 
     verticalManager.add(mTextField = new FooterText(text, Display.getWidth(), Display.getHeight()/2)); 

     HorizontalFieldManager hfm = new HorizontalFieldManager(); 
     Bitmap complete = Bitmap.getBitmapResource("Complete.png"); 
     Bitmap top30 = Bitmap.getBitmapResource("Top30.png"); 

     hfm.add(new BitmapField(complete)); 
     hfm.add(new BitmapField(top30)); 

     verticalManager.add(hfm); 

     this.add(verticalManager); 
    } 
} 

答えて

1

Field sが均等に次HorizontalFieldManagerに間隔を置いて配置され、HorizontalFieldManagerは中でその子に対応します最大許容幅。

HorizontalFieldManager hfm = new HorizontalFieldManager() { 
    protected void sublayout(int maxWidth, int maxHeight) { 
     int w = maxWidth; 
     int h = 0; 
     Field f0, f1; 
     if (getFieldCount() == 2) { 
      f0 = getField(0); 
      f1 = getField(1); 

      layoutChild(f0, maxWidth/2, maxHeight); 
      layoutChild(f1, maxWidth/2, maxHeight); 

      h = Math.max(f0.getHeight(), f1.getHeight()); 

      setPositionChild(f0, (maxWidth/2 - f0.getWidth())/2, (h - f0.getHeight())/2); 
      setPositionChild(f1, maxWidth/2 + (maxWidth/2 - f1.getWidth())/2, (h - f1.getHeight())/2); 
     } 
     setExtent(w, h); 
    }; 
}; 
+0

ありがとうthats私のコードのために働いています。私はsublayoutメソッドを書くことを考えていた。 –

0

はこれを試してみてくださいusing-午前私のコードです -

HorizontalFieldManager hfm = new HorizontalFieldManager(){ 
    protected void sublayout(int maxWidth, int maxHeight) 
     { 
     super.sublayout(Display.getWidth()/2,20); 
     setExtent(Display.getWidth()/2,20); 
     } 
    }; 
    Bitmap complete = Bitmap.getBitmapResource("Complete.png"); 
    Bitmap top30 = Bitmap.getBitmapResource("Top30.png"); 

    hfm.add(new BitmapField(complete)); 
    hfm.add(new BitmapField(top30)); 
関連する問題