【问题标题】:LibGDX Scene2d UI: Table inside table layout problemsLibGDX Scene2d UI:表内表布局问题
【发布时间】:2017-06-23 18:55:55
【问题描述】:

我正在尝试使用此代码执行以下layout(宽度和高度仅用于调试,理想情况下我会让两个表都有 50% 的宽度。超类也是 Table )

left().top()
add(Label("Player name", UI_SKIN)).center().expandX()
row()
add(Table()).width(50f).height(50f)
add(Table()).width(200f).height(50f)
setDebug(true, true)

这导致this,由于某种原因,表格似乎没有在自己的行上,而是最后一个表格将标签推到了左边。如果我只添加一个表,它工作正常(不能添加另一个屏幕截图,因为我没有足够的代表......)。

任何帮助将不胜感激,我现在​​已经没有想法了。

【问题讨论】:

  • 您所描述的表格是一个 2x2 网格,因此您的第一行(标签)需要跨越 2 列(您的底行 - 2 个表格,每个表格都在自己的单元格中)。尝试 add(Label("Player name", UI_SKIN)).colspan(2) 然后使用 center() 和 expandX() 来获得你想要的标签位置。

标签: libgdx kotlin scene2d


【解决方案1】:

你可以这样做

stage= Stage()
Gdx.input.setInputProcessor(stage)

var skin= Skin(Gdx.files.internal("skin/glassy-ui.json"))

var table= Table()
table.defaults().pad(10F)
table.setFillParent(true)

var label=Label("PLAYER NAME",skin)
label.setAlignment(Align.center);

var first_table=Table()
first_table.setDebug(true)
first_table.add(Label("FIRST TABLE",skin))

val second_table=Table()
second_table.add(Label("SECOND TABLE",skin))

table.add(label).colspan(2).fillX()
table.row();
table.add(first_table).expand()
table.add(second_table).expand()

stage.addActor(table)
stage.setDebugAll(true)

输出是:

【讨论】:

  • 相对更有用的答案..您还可以考虑在将内部表添加到外部表的同时添加 .width 和 .height
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-20
  • 1970-01-01
  • 2016-07-22
相关资源
最近更新 更多