2016-02-10 1 views
0

J'ai un HorizontalGroup dans lequel j'ai deux boutons TextButtons. Maintenant, je veux redimensionner ces boutons à la moitié de leur taille, parce que leur trop grand, mais je n'ai pas trouvé un bon moyen de le faire, j'ai essayé quelque chose mais ce n'est pas ce que je veux.Comment mettre à l'échelle un groupe horizontal à l'intérieur d'une table

Heres le code de mise en place

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 est tout simplement un TextButtonStyle avec un NinePatchDrawable et un BitmapFont. Lorsque vous dessinez la table, il ressemble à ceci: Without scaling

ajoutant hGroup.setScale(0.5f); il ressemble à ceci:

With scaling

Maintenant hGroup n'est pas aligné au centre et .aling(Align.center) ne fait rien lors de l'ajout du hgroup .

Appel .width(float) après avoir ajouté hGroup à rétrécir la cellule ne semble pas utile non plus, comme je ne sais pas la largeur exacte de l'échelle hGroup, il ne donne que la largeur non redimensionnée et je trouve genre de clunky pour obtenir la largeur et puis multipliez-le par le facteur d'échelle.

Même lorsque je fais cela, il ne semble pas que je le voulais.

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

ressemble à ceci:

What is happening :(

Tout conseil est apprécié

Répondre

0

Selon le documentation, la largeur de la HorizontalGroup est la somme de la largeur préférée de tous ses enfants (vos boutons). Etant donné cela, vous avez quelques options:

  1. Appelez setWidth sur vos acteurs de bouton et donnez-leur une largeur.
  2. Passer le HorizontalGroup et il suffit d'ajouter vos boutons directement à une table uniforme:

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