在表的顶部添加一行(LibGdx)

时间:2015-05-21 09:15:31

标签: java libgdx

如何在LibGdx中的表格顶部添加一行?

tableName.add(rowElement);

通过这种方式,它在表格的末尾添加了一行(底部)。我需要做相反的事情。

tableName.add(rowElement).align(Align.top); // didn't work

代码:

Table mainTable = new Table();
mainTable.center().top();

Table message = new Table(skin);
Label messageName = new Label("ImYourFather", skin);
message.add(messageName).row();

Label messageText= new Label("THIRD MeSSaGE", skin);
message.add(messageText).row();

mainTable.add(message).align(Align.top).row();

enter image description here

1 个答案:

答案 0 :(得分:4)

简答:你不能在libgdx表中插入(直接)

然而,有一些解决方法。

根据libgdx documentation

  

表格允许更改或删除单元格的小部件(通过设置它)   为null),但Table当前不允许插入单元格   中间或删除。要做到这一点,需要重建表:call   clearChildren删除所有子节点和单元格,然后将它们全部添加到   表再次。

     

如果需要插入或移除单元格,可以使用VerticalGroup或Horizo​​ntalGroup。

因此,您无法在表格的顶部插入单元格。您需要从头开始完全重建表,或者按照建议使用VerticalGroup类。

第一个解决方案:每次要在顶部插入消息时重建表格。

第二个解决方案:使用垂直组

 // Initialize
 VerticalGroup v = new VerticalGroup();
 v.addActor(new Label("First row", skin))
 v.addActor(new Label("Second Row", skin))
 v.pack();
 myScene.addActor(v);

 ...

 // Add to the 'top'
 v.addActorAt(0, new Label("I'm at the first row", skin));
 v.pack();

我没有测试过这段代码,但它应该可以帮助你理解它的要点

但是,通过这样做,请注意您将失去libgdx Table的部分功能。