首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置ButtonField的高度

设置ButtonField的高度
EN

Stack Overflow用户
提问于 2012-02-27 20:04:21
回答 3查看 884关注 0票数 0

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

我已经成功地改变了它的宽度(覆盖setPreferredWidth()就足够了)。然而,我在改变它的高度时遇到了麻烦。

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

代码语言:javascript
复制
protected void layout(int arg0, int arg1)
{
    //super.layout(myDesiredWidth, myDesiredHeight);
    //setExtent(myDesiredWidth, myDesiredHeight);
}

我还尝试了重写它的管理器( vfm)的子布局,如下所示:

代码语言:javascript
复制
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方法。

EN

回答 3

Stack Overflow用户

发布于 2012-02-27 20:28:12

请参阅此示例类:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2012-02-28 16:47:22

黑莓屏幕的工作方式如下。

  1. 屏幕的代理管理器进行自身布局。
  2. 代理管理器要求其他字段和管理器进行布局。
  3. 添加到代理管理器的管理器进行自身布局,并要求其子字段或管理器进行布局。
  4. 此过程将继续,直到所有字段都布局完毕。

您想要布局一个按钮字段,它是管理器的一部分。根据上面的规则,您只需覆盖按钮字段的布局方法。正如alishaik786所说,除了buttonField之外,您不需要对管理器或其他任何东西进行布局。

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

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

代码语言:javascript
复制
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

票数 1
EN

Stack Overflow用户

发布于 2012-03-14 19:51:49

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9464734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档