我需要更改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并从头开始实现绘制方法。
答案 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);
}
}
我得到这样的图像:
根据您的要求使用;
答案 1 :(得分:1)
Blackberry屏幕按以下方式工作。
您想要布局作为经理一部分的按钮字段。根据上述规则,您必须仅覆盖按钮字段的布局方法。正如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());
}
在构造函数中设置fieldWidth
和fieldHeight
后,您可以分别返回getPreferredWidth()
和getPreferredHeight()
的值。
在调整字段时会调用字段的layout()
,这会将字段的范围设置为fieldWidth
和fieldHeight
答案 2 :(得分:0)
使用可自定义的ButtonField,如下所示:https://github.com/HeshamMegid/BlackBerry-Custom-Controls