这对我来说有点神秘,但我在libgdx中有一张表,其中所有内容都垂直放置在新单元格中;
我没有在任何地方使用.row()。 可能在这里做一些愚蠢的事情,但我无法看到它。 关于什么可能导致这种情况的线索?
(如果需要,我会发布代码,但它不是那么整洁,看到我认为知道任何可能导致换行的会帮助我,不一定需要它)
修改的 试图将代码缩减到添加项目时发生的所有位
//添加时触发的功能
// SSSNode是项目详细信息的语义参考,它只是被制作成像对象的标签
public void addItem(SSSNode itemsnode){
Item newitem = new Item(itemsnode); //Item extends label
allItems.add(newitem);
super.add(newitem).size(60, 30).top().left().fillY().expandY();
//pack();
//super.invalidate();
//super.validate(); (tried doing pack, validate, and none...neither helped)
//update the GUI bar in case the inventory tab isnt there yet
MainExplorationView.usersGUI.setDataVisible(true);
}
以下代码位于“usersGUI”中,它创建并处理名为inventory的弹出窗口,该弹出窗口在图片中是什么,是我无法表现的表格。
//ensures the interface for the inventory popup is setup and visible
//also refreshes the links
public void setDataVisible(boolean visible){
if (myContents.isVisible!=true){
myContents.isVisible=visible;
refreshlinks();
setupInventory();
}
}
private void refreshlinks() {
super.clearChildren();
super.addActor(backgroundobject);
super.addActor(ME.playersInventory); //re adds the inventory panel table?
int y = 440;
ME.playersInventory.validate(); //revalidated the table (I dumped this almost everywhere in frustration)
//below is not relevant, it updates other items in a onscreen gui
for (InterfaceButton link : allLinks) {
if (link.isVisible==true){
link.setPosition(5,y);
super.addActor(link);
y=y-30;
}
}
backgroundobject.setSize(85, 200);
backgroundobject.setPosition(0,y+20);
}
//ensures inventory is setup once.
public void setupInventory() {
if (setup){
return;
}
Log.info("setupInventory");
ME.playersInventory.setPrefWidth(super.getWidth());
Log.info("width is "+super.getWidth());
ME.playersInventory.setHeight(200);
ME.playersInventory.pack();
float X = myContents.getX();
float Y = myContents.getY()-ME.playersInventory.getHeight();
Log.info("popping up inventory at:"+X+","+Y);
ME.playersInventory.setPosition(X, Y);
super.validate();
setup=true;
}
完整代码也在GitHub上; https://github.com/ThomasWrobel/MeshExplorerGDX 整个项目是一个游戏,用于演示/测试和开源分布式语义数据库系统。相关的位是库存,也许是创建它的gui。
任何对LibGDXs工作有深入了解的人都应该认为不需要查看任何代码,如果其他东西可以告诉表开始新行。 (即,任何可能导致它自动发生的布局限制?)
答案 0 :(得分:3)
layout
是使布局逻辑更简单的副作用。现在是fixed。
注意HorizontalGroup仍然更适合您的用例,并且可以在任何索引处添加/删除actor。
答案 1 :(得分:1)
答案似乎是layout()导致新行; http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=15857&p=68533&hilit=layout#p68533
尽管文档没有说明这一点,但这仍然是它应该如何工作的。