在 Table (LibGdx) 的顶部添加一行
Add a row to the top of a Table (LibGdx)
如何在 LibGdx 中的 Table 的顶部添加一行?
tableName.add(rowElement);
这样,它在table(底部)的末尾添加了一行。我需要做相反的事情。
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();
简短回答:您不能插入 libgdx Table(直接)
但是,有一些解决方法。
根据libgdx documentation :
Table allows a cell's widget to be changed or removed (by setting it
to null), but Table currently does not allow cells to be inserted in
the middle or removed. To do that, the Table needs to be rebuilt: call
clearChildren to remove all children and cells, then add them all to
the Table again.
If inserting or removing cells is needed, VerticalGroup or HorizontalGroup can be used.
因此您不能在 Table 的顶部插入单元格。您需要从头开始完全重建 table,或者按照建议使用 VerticalGroup class。
第一个解决方案:每次要在顶部插入消息时重建table。
第二种解决方案:使用垂直组
// 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 的一部分能量。
如何在 LibGdx 中的 Table 的顶部添加一行?
tableName.add(rowElement);
这样,它在table(底部)的末尾添加了一行。我需要做相反的事情。
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();
简短回答:您不能插入 libgdx Table(直接)
但是,有一些解决方法。
根据libgdx documentation :
Table allows a cell's widget to be changed or removed (by setting it to null), but Table currently does not allow cells to be inserted in the middle or removed. To do that, the Table needs to be rebuilt: call clearChildren to remove all children and cells, then add them all to the Table again.
If inserting or removing cells is needed, VerticalGroup or HorizontalGroup can be used.
因此您不能在 Table 的顶部插入单元格。您需要从头开始完全重建 table,或者按照建议使用 VerticalGroup class。
第一个解决方案:每次要在顶部插入消息时重建table。
第二种解决方案:使用垂直组
// 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 的一部分能量。