libGDX自动调整大小的图像按钮

3
我希望你能够为我在libGDX应用中创建一个具有图像按钮的列表展示。这些图像的大小应该是400x100像素左右。我需要这个列表能够将图像拉伸至屏幕宽度,同时保持图片比例——也就是高度也需要随之缩放。
但每次当我尝试去实现这一点时,图像都没有被正确地调整大小。有时当图像小于屏幕宽度时,它并没有被拉伸,或者填充不正确,或者比例不对。
您能否提供一种解决方法?我一直在苦苦寻找任何解决方案... 这个Actor必须是一个按钮 (需要“checked” / 选中的功能)。
我尝试像下面这样做:
Table table = new Table();
table.setFillParent(true);

Texture t1 = ... snip ...
Texture t2 = ... snip ...
ImageButton i1 = new ImageButton( new TextureRegionDrawable(new TextureRegion(t1));
ImageButton i2 = new ImageButton( new TextureRegionDrawable(new TextureRegion(t2));

i1.getImageCell().expandX().fillX();
i2.getImageCell().expandX().fillX();

table.add(i1).expandX().fillX();
table.row();
table.add(i2).expandX().fillX();

getStage().add(table);    

你是在使用 camera 还是如果你正在使用最新的夜版,你是在使用 Viewport?我认为这些是你正在寻找的东西。 - Robert P
2个回答

4
这对我有用:
imageButton.setBounds(x, y, 128, 128);
imageButton.getImageCell().expand().fill();

实际上,Libgdx官方指南建议不要设置小部件的边界,而是使用包含小部件的单元格的.width()和.height()方法。 - Luca Marzi

0
float screenWidth = this.stage.getWidth();
i2.setWidth(screenWidth);

如果我理解正确,这应该可以做到你想要的。


你好,谢谢回答。但是代码完全忽略了setWidth。当宽度小于屏幕宽度时,expandX()和fillX()与table.setFillParent()一起完成了工作。问题在于图像缩放并填充其各自单元格的高度。有时图像在水平方向上重叠,有时它们之间有30像素的填充。当我执行Table.drawdebug(stage);时,单元格之间没有填充,但是存在空白空间在图像上方/下方。不知道为什么.. :( - Marek Halmo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接