我需要更改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);
}它没有起作用。我仍然不确定这些布局和子布局方法在后台是如何工作的,但我确信有人需要在我之前改变按钮的大小。
编辑:我会更具体。我使用的是BBJRE6.0,覆盖getPreferredHeight()和layout()是错误的(改变高度会极大地改变宽度,我的按钮周围的其他字段会丢失它们的文本等)。我尝试了BB JRE 5.0,增加高度起作用了,但是减小不起作用。不管怎样,我用谷歌搜索了很多,但我找不到一个明确的答案,我想我必须创建我自己的自定义字段并从头开始实现paint方法。
发布于 2012-02-27 20:28:12
请参阅此示例类:
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);
}
}我得到了像这样的图像:

根据您的需要使用;
发布于 2012-02-28 16:47:22
黑莓屏幕的工作方式如下。
您想要布局一个按钮字段,它是管理器的一部分。根据上面的规则,您只需覆盖按钮字段的布局方法。正如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
发布于 2012-03-14 19:51:49
使用如下所示的可自定义ButtonField:https://github.com/HeshamMegid/BlackBerry-Custom-Controls
https://stackoverflow.com/questions/9464734
复制相似问题