强制actor遵守table.add(actor).width()中设置的宽度

时间:2015-12-27 11:52:38

标签: libgdx

我在table.add(actor).width(width)设置演员的宽度。填充设置为屏幕宽度的1%。这是我得到的结果:enter image description here

如您所见,演员之间的间距超过1%。我尝试使用fill()方法,但它没有用。我也试过setFillParent(true)演员,没有成功。这里发生了什么?这是完整的代码。 actor之间的唯一间距应该是我用padding设置的间距。我如何实现这一目标?

private void createScrollPane(){
        texture=new Texture("badlogic.jpg");
        ImageButton.ImageButtonStyle fibs=new ImageButton.ImageButtonStyle();
        fibs.imageUp=new TextureRegionDrawable(new TextureRegion(texture));
        button1= new ImageButton(fibs);
        button2= new ImageButton(fibs);
        button3= new ImageButton(fibs);

        button1.setPosition(0, 0);
        button2.setPosition(0, 0);
        button3.setPosition(0, 0);
        scrollTable=new Table();
        scrollTable.setBounds(Gdx.graphics.getWidth()*0.03f,0,Gdx.graphics.getWidth()*0.94f, Gdx.graphics.getHeight());
        scrollTable.setPosition(Gdx.graphics.getWidth() * 0.03f, 50);
        scrollTable.add(button1).width(Gdx.graphics.getWidth() * 0.3f).padLeft(Gdx.graphics.getWidth() * 0.01f).fill();
        scrollTable.add(button2).width(Gdx.graphics.getWidth() * 0.3f).padLeft(Gdx.graphics.getWidth() * 0.01f).padRight(Gdx.graphics.getWidth() * 0.01f).fillX();
        scrollTable.add(button3).width(Gdx.graphics.getWidth() * 0.3f).padRight(Gdx.graphics.getWidth() * 0.01f).fill();

        stage.addActor(scrollTable);
    }

2 个答案:

答案 0 :(得分:0)

ImageButton是一个Button,其上面有Image。如果您只想要一个按钮,那么使用Button类并将up drawable设置为您想要的drawable。请注意,您可以启用阶段或表的调试绘图,以显示正在进行的操作。

答案 1 :(得分:0)

您的函数调用正在影响Table的单元格,而不是单元格中的actor。

调用scrollTable.setDebug(true)查看单元格,填充等。您会很高兴发现您的函数调用正在工作,只是在单元格而不是其内容上。

下一步是使用小部件构建复合布局,允许您展开按钮但将它们保持在水平对齐状态。如果你足够努力地对抗细胞,你可能能够用一张桌子来完成它,我不确定。

我做的是使用Table,然后添加Horizo​​ntalGroup。 Horizo​​ntalGroup位于表格中的单元格内。在Horizo​​ntalGroup里面,我添加了我的按钮。在Horizo​​ntalGroup中按照我想要的方式布置按钮比通过表格更容易。

对于ImageButton,您可以显式设置样式的minHeightminWidth,这将强制缩放附加的图像。