当LibFDX中setFillParent为true时,Actor的位置是错误的

时间:2017-05-22 23:03:56

标签: java layout libgdx actor stage

我已经花了好几个小时试图解决这个问题而且我已经疯了,请看一下我的问题。

说明问题的图片:

Image illustrating this

  • exitButton' setFillParent功能设为false时 结果是图像的右侧,按钮居中 在Container内但尺寸错误。

  • exitButton' setFillParent功能设为true时 结果是图像的左侧,按钮的大小正确 但这个立场是错误的。

以下是代码:

    Container container = new Container(exitButton);

    container.fill();

    container.setRound(false);

    container.setSize(buttonSize, buttonSize);

    exitButton.setFillParent(true);

    //exitButton.setFillParent(false);

    container.setPosition(
            ((float)viewportWidth/7f) - (buttonSize/2f)
            ,((float)viewportHeight*5f/6f)  - (buttonSize/2f)
    );

1 个答案:

答案 0 :(得分:0)

小部件的设计是由父母设计的。 setFillParent(true)允许窗口小部件覆盖它并设置自己的大小(以匹配其父级的大小)。除非它是层次结构的顶级窗口小部件,否则你永远不想这样做,因为当一个窗口小部件控制它自己的大小时,它的父级就失去了正确定位它的能力。

至于为什么按钮被绘制得比容器大,如果孩子的minWidth / minHeight大于父母,则会发生这种情况。假设exitButton是一个ImageButton或只是一个Button,这意味着它的图像或背景的drawable大于buttonSize

最简单的方法是覆盖getMinWidth()getMinHeight()以返回零。例如:

exitButton = new Button(skin, style){
    public float getMinWidth(){return 0;}
    public float getMinHeight(){return 0;}
};