我已经花了好几个小时试图解决这个问题,并且发疯了,请看看我的问题。
该图说明了该问题:
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)
);
最佳答案
小部件的设计要根据其父母的大小而定。 setFillParent(true)
允许小部件覆盖它并设置其自己的大小(以匹配其父级的大小)。除非它是层次结构的顶层小部件,否则您永远都不想这样做,因为当小部件控制自己的大小时,它的父级将失去正确定位它的能力。
至于为什么将按钮绘制为大于容器的原因,如果子级的minWidth
/ minHeight
大于父级,则可能会发生这种情况。假设exitButton
是一个ImageButton或仅仅是一个Button,这意味着其Image或背景的可绘制对象大于buttonSize
。
解决此问题的最简单方法是覆盖getMinWidth()
和getMinHeight()
以返回零。例如:
exitButton = new Button(skin, style){
public float getMinWidth(){return 0;}
public float getMinHeight(){return 0;}
};