2011-09-11 2 views
1

ButtonField로 구성된 메뉴를 설정하기 위해 아주 기본적인 사용자 정의 레이아웃을 만들었습니다.ButtonField에 신비한 여분의 픽셀이 있습니까?

세로로 배치하려면 화면을 6으로 분할 한 다음 코드에 표시된대로 2,3,4 및 5로 나누십시오. 에뮬레이터에 대한 그래서

, 내가 그들을 확인할 때 토치, 160,240,320 및 400 그러나

에서 버튼을 볼 것이다 (480)의 높이, 그들은이 아래의 모든 24 픽셀이며, 명백한 이유하지 않는 한이 보인다 이것은 제가 놓친 전형적인 대회입니다!

package Test; 

import net.rim.device.api.system.Display; 
import net.rim.device.api.ui.Field; 
import net.rim.device.api.ui.container.VerticalFieldManager; 

class MenuLayoutManager extends VerticalFieldManager{ 

public MenuLayoutManager() 
{ 
    super(); 
} 

public int getPreferredWidth() 
{ 
    int preferredWidth = Display.getWidth(); 
    return preferredWidth; 
} 

protected void sublayout(int inMaxWidth, int inMaxHeight) 
{ 
int xCentre = Display.getWidth()/2; 
int yGap = Display.getHeight()/6; 
int xPos = 0; 
int yPos = yGap * 2; 
int fieldNo = this.getFieldCount(); 

for(int index = 0; index<fieldNo; index++) 
{ 
Field aField = this.getField(index); 
this.layoutChild(aField, inMaxWidth, inMaxHeight); 
xPos = xCentre - (aField.getWidth()/2); 
this.setPositionChild(aField, xPos, yPos); 
yPos += yGap; 
} 
this.setExtent(inMaxWidth, inMaxHeight); 


} 
} 

------ 엔트리 포인트와 버튼을 생성 ---- MainScreen와

package Test; 


import net.rim.device.api.ui.component.ButtonField; 
import net.rim.device.api.ui.container.MainScreen; 

class MyScreen extends MainScreen 
{ 
public MyScreen(){ 
super(MainScreen.NO_VERTICAL_SCROLL|MainScreen.NO_VERTICAL_SCROLLBAR); 
this.initialize(); 
} 

private void initialize() 
{   
    // Set the displayed title of the screen 


    this.setTitle(String.valueOf("Ben's Menu")); 

    MenuLayoutManager mlm = new MenuLayoutManager(); 
    ButtonField Button1 = new ButtonField("New Game"); 
    ButtonField Button2 = new ButtonField("High Scores"); 
    ButtonField Button3 = new ButtonField("Instructions"); 
    ButtonField Button4 = new ButtonField("Exit"); 
    mlm.add(Button1); 
    mlm.add(Button2); 
    mlm.add(Button3); 
    mlm.add(Button4); 
    this.add(mlm); 


} 



} 

답변

2

, 당신은 화면 내용에 할당 된 전체 화면의 높이를하지 않습니다. (최소한 IIRC에는 제목과 구분 기호가 있습니다.) 대신 전체 화면을 사용하여 어떻게되는지보십시오.