我花了几个小时试图解决这个问题,但快要疯了,请看看我的问题。
说明问题的图片:
当
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,这意味着其图像或背景的可绘制对象大于 buttonSize
。
解决此问题的最简单方法是重写 getMinWidth()
和 getMinHeight()
以返回零。例如:
exitButton = new Button(skin, style){
public float getMinWidth(){return 0;}
public float getMinHeight(){return 0;}
};
关于java - 在 LibGDX 中,当 setFillParent 为 true 时,Actor 的位置是错误的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44123362/