设置ButtonField的高度

时间:2012-02-27 12:04:21

标签: blackberry

我需要更改ButtonField的大小。它位于VerticalFieldManager中,它是MainPage中唯一的VFM。

我已经成功更改了它的宽度(覆盖setPreferredWidth()就足够了)。但是我在改变它的高度方面遇到了麻烦。

到现在为止,我重写了setPreferredHeight()并且它没有做任何事情。我已经尝试覆盖这样的布局(尝试了所有注释行的排列):

protected void layout(int arg0, int arg1)
{
    //super.layout(myDesiredWidth, myDesiredHeight);
    //setExtent(myDesiredWidth, myDesiredHeight);
}

我也尝试覆盖其经理(vfm)的子布局,如下所示:

protected void sublayout(int arg0, int arg1)
{
    super.sublayout(arg0, arg1);
    ButtonField myButton = (ButtonField)getField(1);
    layoutChild(myButton,myDesiredWidth,myDesiredHeight);
}

它不起作用。我仍然不确定那些布局和子布局方法在后台如何工作,但我确信有人需要在我之前改变按钮的大小。

编辑:我会更具体。我正在使用BB JRE 6.0并重写getPreferredHeight()和layout()是错误的(更改高度会极大地改变宽度,我的按钮周围的其他字段将丢失其文本等)。我尝试了BB JRE 5.0并增加了工作高度,但是减少不起作用。无论如何,我google了很多,我找不到一个明确的答案,我想我必须创建自己的自定义Field并从头开始实现绘制方法。

3 个答案:

答案 0 :(得分:1)

请参阅此示例类:

public class Abc extends MainScreen
{   
ButtonField clickButton;
public Abc()
{   
    createGUI();    
}
public void createGUI() 
{
    clickButton=new ButtonField("Click Here", Field.FIELD_HCENTER)
    {
        protected void layout(int width, int height) 
        {
            setExtent(200, 80);
        }
    };
    add(clickButton);                   
}
}

我得到这样的图像:

Size of button

根据您的要求使用;

答案 1 :(得分:1)

Blackberry屏幕按以下方式工作。

  1. 屏幕的代理经理自行陈述。
  2. 代表经理要求其他领域和经理进行布局。
  3. 添加到委托经理的经理自行陈述并要求其子领域或经理进行布局。
  4. 此过程一直持续到所有字段都已布局。
  5. 您想要布局作为经理一部分的按钮字段。根据上述规则,您必须仅覆盖按钮字段的布局方法。正如alishaik786所说,除了buttonField之外,你不必布局经理或其他任何东西。

    自定义按钮字段的一个简单示例在http://www.coderholic.com/blackberry-custom-button-field/

    中给出

    如果您查看代码,您可以看到以下覆盖的方法,这些方法是布置字段本身所必需的

    public int getPreferredWidth()
    {
        return fieldWidth;
    }
    
    public int getPreferredHeight()
    {
        return fieldHeight;
    }
    
    protected void layout(int arg0, int arg1)
    {
        setExtent(getPreferredWidth(), getPreferredHeight());
    }
    

    在构造函数中设置fieldWidthfieldHeight后,您可以分别返回getPreferredWidth()getPreferredHeight()的值。

    在调整字段时会调用字段的layout(),这会将字段的范围设置为fieldWidthfieldHeight

答案 2 :(得分:0)

使用可自定义的ButtonField,如下所示:https://github.com/HeshamMegid/BlackBerry-Custom-Controls