如何缩放表格内的水平组

时间:2016-02-10 17:53:18

标签: java user-interface libgdx scene2d

我有一个HorizontalGroup我有两个TextButtons。现在我想将这些按钮缩放到它们的一半大小,因为它们太大了,但是我没有找到一个很好的方法来做到这一点,我尝试了一些但不是我想要的东西。

下面是设置它的代码

    weaponsButton = new TextButton("Weapons", buttonStyle);
    weaponsButton.getLabel().setColor(Color.BLACK);
    weaponsButton.pad(10f);
    statsButton = new TextButton("Stats", buttonStyle);
    statsButton.getLabel().setColor(Color.BLACK);
    statsButton.pad(10f);

    hGroup = new HorizontalGroup();
    hGroup.addActor(weaponsButton);
    hGroup.addActor(statsButton);

    table = new Table();
    table.add(hGroup);

    table.setFillParent(true);
    table.debug();

    stage = new Stage();
    stage.addActor(table);

buttonStyle只是一个TextButtonStyle NinePatchDrawableBitmapFont。绘制表时,它看起来像这样:Without scaling

添加hGroup.setScale(0.5f);看起来像这样:

With scaling

现在hGroup未在中心对齐,.aling(Align.center)在添加hGroup时没有做任何事情。

在添加.width(float)之后调用hGroup缩小单元格似乎也没用,因为我不知道缩放hGroup的确切宽度,它只给出了未缩放的宽度,我发现获得宽度然后乘以缩放因子有点笨重。

即使我这样做也不像我想要的那样。

table.add(hGroup).width(hGroup.getPrefWidth()*0.5f).height(hGroup.getPrefHeight()*0.5f);

看起来像这样:

What is happening :(

感谢任何建议

1 个答案:

答案 0 :(得分:0)

根据documentation,Horizo​​ntalGroup的宽度是其所有子项(按钮)的首选宽度的总和。鉴于此,您有几个选择:

  1. 在按钮actor上调用setWidth并为它们指定宽度。
  2. 跳过Horizo​​ntalGroup,只需将按钮直接添加到表中即可:

    Table table = new Table();
    table.defaults().uniformX();
    table.add(weaponsButton);
    table.add(statsButton);