在scene2d.ui.Table中定义宽度的单元格对齐不起作用

时间:2014-04-14 18:33:19

标签: libgdx

如果我给单元格定义宽度,我的单元格内容对齐有问题。

示例:

table = new Table(skin);
table.add("Name1").uniform();
table.add("0").width(50).right();
table.add(":");
table.add("1").width(50);
table.add("Name2").uniform();
table.row();

农产品:

  

| Name1 | 0_ _ |:| 1 _ _ | Name2 |

但我想要这个结果:

  

| Name1 | _ _ 0 |:| 1 _ _ | Name2 |

如果我像这样修改表格,它将起作用:

table = table =new Table(skin);
table.add("Name1").right();
table.add("0").right();
table.add(":");
table.add("1").left();
table.add("Name2").left();
table.row();

table.add("").uniform();
table.add("").width(50);
table.add("");
table.add("").width(50);
table.add("").uniform();

我不明白为什么第一个例子没有创建相同的结果?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并为我的所有表启用了调试,然后我意识到当你使用.add()。width(x)时,它会调整窗口小部件的宽度(显示为绿线),不仅仅是我预期的单元格宽度(显示为红线),这就产生了问题。

在第二个示例中,您调整了第二行的空单元格大小,在第一行中,您的标签小部件的大小不是50,并且可以在中心或右侧对齐。

这是一个与HTML表格不同的障碍,应该修复。现在,您的第二个示例可以用作解决方案,另一个示例(我使用的是)使用内部表作为小部件。

table.add(innerTable);
编辑:我在篡改时为我找到了第三个也是最好的解决方案。在将小部件添加到表之前,只需对其进行对齐。

label.setAlignment(Align.right);
table.add(label).width(50);