2012-04-23 4 views
0

이 이미지와 같은 UI를 만들고 싶습니다. http://i.stack.imgur.com/bB8UM.png . 세로 및 가로 필드 관리자와 같은 기본 관리자를 사용합니다. 그러나 가로 관리자가 작동하지 않습니다. 내 가로가 단일 이미지를 얻습니다. 두 명이 아닌 현장 매니저. 그 이유가 뭐야? 내가 잘못 가고있는 곳? Blackberry Field Managers (가로 및 세로)

내가 일 아민은

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의 균등 다음 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

감사합니다. 내 코드에서 작동합니다. 하위 레이아웃 방법을 작성하려고했습니다. –

0

이 시도입니다있는 내 코드입니다 -

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));