我已经几个小时试图解决这个问题,快疯了,请看看我的问题。
说明问题的图像:
说明这一点的图像
-
当
exitButton
的setFillParent
函数设置为false
结果是图像的右侧,按钮居中在容器内,但大小错误。 -
当
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
是一个图像按钮或只是一个按钮,这意味着其图像或背景的可绘制对象大于buttonSize
。
解决此问题的最简单方法是覆盖getMinWidth()
并getMinHeight()
返回零。例如:
exitButton = new Button(skin, style){
public float getMinWidth(){return 0;}
public float getMinHeight(){return 0;}
};