2010-07-26 32 views
0

我想要实现的是具有指定宽度和高度的自定义弹出屏幕。 在该屏幕上,我添加了两个按钮,它们保持一行并水平对齐中心。无法在黑莓的自定义弹出屏幕上水平对齐字段

public class CustomPopupScreen extends PopupScreen { 

ButtonField minimizeBf; 
ButtonField cancelBf; 
HorizontalFieldManager hfm; 

public CustomPopupScreen() { 
    super(new VerticalFieldManager()); 
    minimizeBf = new ButtonField("Minimize", FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    cancelBf = new ButtonField("Cancel", FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    hfm = new HorizontalFieldManager(FIELD_HCENTER|Field.USE_ALL_WIDTH); 
    hfm.add(minimizeBf); 
    hfm.add(cancelBf); 
    add(hfm); 
    //add(minimizeBf); 
    //add(cancelBf); 
} 

protected void sublayout(int width, int height) { 
    // TODO Auto-generated method stub 
    int xPos = 0; 
    int yPos = 0; 
    int sideMargin = 30; 
    int screenWidth = width - (2 * sideMargin); 
    int screenHeight = 100; 
    layoutDelegate(screenWidth, screenHeight); 
    //setPositionDelegate(0, 0); 
    super.sublayout(screenWidth, screenHeight); 
    setExtent(screenWidth, screenHeight); 
    xPos = (width - screenWidth)/2; 
    yPos = (height - screenHeight)/2; 
    setPosition(xPos, yPos); 
    // layout(screenWidth, screenHeight); 
} 

}

如果我添加这些按钮在屏幕上,那么它会水平对齐中心,但按键出现在不同的行,而我希望它出现在同一排。

有人可以告诉我我的代码错在哪里吗?

回答

0

尝试从Horizo​​ntalFieldManager分配中删除USE_ALL_WIDTH标志。这应该够了吧。

+0

不幸的是它没有。 我想我应该把东西放在sublayout方法,所以在这个屏幕内的管理器将相应对齐,但我只是不知道:((。 感谢您的帮助。 – 2010-07-27 02:11:04

0

尝试在水平管理器中放置几个​​垂直现场管理器,每个垂直管理器占用一半的可用宽度。然后向每个垂直管理器添加一个按钮。

+0

感谢您的回答。 我假设如果我想要创建第三个按钮,那么我必须为它添加一个垂直管理器,对吧? 这可能会起作用,但我想在这里实现的是,我应该如何在sublayout方法上添加一些东西,以便horizo​​ntalManager可以在一个自定义弹出屏幕。 – 2010-08-05 01:48:54

0

我只是想知道自定义尺寸的目的。通常有一种正确的方式来做一些事情,而不必手动修改布局。如果你分享你的最终目标,我们可能会有更好的帮助。因为它几乎看起来只是让两个按钮并排排列。要添加宽度和高度,您可以添加间隔符(将(新的SeparatorField()))添加到字段管理器,并指定它们的宽度/高度以及您想要的管理器中的位置。这将允许所有字段使用其默认布局模式。

0

只是做一个

hfm = new HorizontalFieldManager(USE_ALL_WIDTH); 

我认为它可以帮助你只要给它一个尝试。