1

以下代码段包含一个水平字段管理器,其中添加了五个按钮。

1.我无法将水平滚动设置为水平字段管理器,因此我无法访问按钮 4 和按钮 5。

2.通常我们通过以下方式设置水平滚动

horizontalFieldManager = 
    new HorizontalFieldManager(USE_ALL_WIDTH|HorizontalFieldManager.FIELD_LEFT|HORIZONTAL_SCROLL);

但是由于我在水平字段管理器的构造函数中添加了按钮,所以我无法使用它。

3.我找到了这个属性: horizontalFieldManager.setHorizontalScroll(position); 它包含 Parameter:position 其中位置应该是新的水平滚动位置。我尝试传递水平字段管理器的 x 坐标,但它不起作用。我应该传递什么作为position参数?

HorizontalFieldManager container = new HorizontalFieldManager()
{  
    protected void sublayout(int maxWidth, int maxHeight) 
    {   
        Field field = null;
        int x = 0;
        int y = 0;
        int maxFieldHeight = 0;
        for (int i = 0; i < getFieldCount(); i++) 
        {
            field = getField(i);
            layoutChild(field, maxWidth, maxHeight);
            setPositionChild(field, x,y);
            x+=field.getWidth();
            if(i==0)
            {
                maxFieldHeight = field.getHeight(); // height set of the first button since all components have the same height
            }
        }

        setExtent(Display.getWidth(), maxFieldHeight);

    }
};

ButtonField button1 = new ButtonField("Button1");
ButtonField button2 = new ButtonField("Button2");
ButtonField button3 = new ButtonField("Button3");
ButtonField button4 = new ButtonField("Button4");
ButtonField button5 = new ButtonField("Button5");

container.add(button1);
container.add(button2);
container.add(button3);
container.add(button4);
container.add(button5);

add(container);
4

1 回答 1

0

Horizo​​ntalFieldManager 构造函数

如果您只是更改调用HorizontalFieldManager构造函数的方式,请从此:

HorizontalFieldManager container = new HorizontalFieldManager() {
    protected void sublayout(int maxWidth, int maxHeight) {   

对此:

HorizontalFieldManager container = 
    new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL | Manager.HORIZONTAL_SCROLLBAR) {

    protected void sublayout(int maxWidth, int maxHeight) {   

然后,您将能够水平滚动并到达所有五个按钮。


子布局()

在您的sublayout()方法中,您似乎正在像HorizontalFieldManager通常那样布置您的字段。所以,我认为添加该代码没有任何意义。只需这样做:

HorizontalFieldManager container = 
   new HorizontalFieldManager(Manager.HORIZONTAL_SCROLL | Manager.HORIZONTAL_SCROLLBAR);

ButtonField button1 = new ButtonField("Button1");
/* the rest of your code is the same */

如果您以后想要控制按钮之间的间距,请使用边距

  ButtonField button1 = new ButtonField("Button1");
  button1.setMargin(10, 10, 10, 10);
  ButtonField button2 = new ButtonField("Button2");
  button2.setMargin(10, 10, 10, 10);

通常,使用 aHorizontalFieldManager或 aVerticalFieldManager覆盖通常不是一个好主意sublayout()。如果您真的想要那里的自定义行为,您可能应该Manager直接使用您自己的子类进行扩展。

于 2013-06-06T08:45:08.113 回答