【问题标题】:Scene2d Positioning Components on StackScene2d 在堆栈上定位组件
【发布时间】:2021-08-27 08:57:44
【问题描述】:

这是当前状态:image

但我还有两件事要做:

  1. 将堆栈移动到屏幕的左上角
  2. 在图片中,我把羊皮纸分成了两部分,我想在上面放2个标签,在下面放2-3个文字按钮。

相关代码

Table table = new Table();
table.center();
table.setFillParent(true);

Stack stack = new Stack();

titleLabel.setFontScale(0.5f);
label1.setFontScale(0.5f);
textButton.getLabel().setFontScale(0.5f);
textButton2.getLabel().setFontScale(0.5f);

parchment.setScaling(Scaling.fill);
stack.add(parchment);

Table overlay = new Table();
overlay.add(titleLabel).expand();
overlay.row();
overlay.add(label1).expand();
overlay.row();
overlay.add(textButton).expand();
overlay.row();
overlay.add(textButton2).expand();

stack.add(overlay);

table.add(stack).top().left();

stage.addActor(table);

【问题讨论】:

    标签: libgdx


    【解决方案1】:

    在这种情况下要做的第一件事是在您拥有的任何表格上设置调试 - 然后您将能够看到显示表格有多大以及表格中的单元格有多大的边界线。只需这样做:

    table.setDebug(true);
    
    1. 将堆栈移动到屏幕的左上角

    使用调试集,我可以看到您的堆栈没有填满整个表格或整个屏幕。 Stacks 只会增长以适应其内容,它们不会自动填充其容器,因此要填充屏幕,请将“expand()”添加到 Table 中的 Stack 单元格,如下所示:

    table.add(stack).expand().top().left();
    
    1. 在图片中,我把羊皮纸分成了两部分,我想在上面放2个标签,在下面放2-3个文字按钮。

    您可以通过以下两种方式之一执行此操作。您可以为每个组制作一个表格,如果每个组中有很多项目,这将是一个好方法。或者,如果只有几个项目,您可以添加“expand()”以强制中间的项目向上/向下推动其他项目,如下所示:

            Table table = new Table();
    //        table.setDebug(true);
            table.setFillParent(true);
    
            Stack stack = new Stack();
    
            titleLabel.setFontScale(0.5f);
            label1.setFontScale(0.5f);
            textButton.getLabel().setFontScale(0.5f);
            textButton2.getLabel().setFontScale(0.5f);
    
            parchment.setScaling(Scaling.fill);
            stack.add(parchment);
    
            Table overlay = new Table();
    //        overlay.setDebug(true);
            overlay.add(titleLabel).top();
            overlay.row();
            overlay.add(label1).expand().top();
            overlay.row();
            overlay.add(textButton).expand().bottom();
            overlay.row();
            overlay.add(textButton2).bottom();
    
            stack.add(overlay);
    
            table.add(stack).expand().top().left();
    
            stage.addActor(table);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 2016-06-26
      • 2021-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多