2017-06-23 1 views
0

J'essaye de faire le suivant layout avec ce code (les largeurs et les hauteurs sont juste pour le débogage, idéalement j'aurais les deux tables ont 50% de la largeur. la superclasse est un Table)LibGDX Scene2d UI: Tableau à l'intérieur des problèmes de disposition de 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) 

qui se traduit par this, pour une raison quelconque les tables ne semblent pas aller sur leur propre ligne, et au lieu de la dernière table pousse l'étiquette vers la gauche. Si je n'ajoute qu'une table, ça marche bien (impossible d'ajouter une autre capture d'écran car je n'ai pas assez de rep ...).

Toute aide serait grandement appréciée, je suis à court d'idées maintenant.

+0

Votre table vous avez décrit est une grille de 2x2, de sorte que votre première ligne (l'étiquette) aurait besoin pour couvrir 2 colonnes (votre rangée du bas - 2 tables, chacune dans leur propre cellule). Essayez d'ajouter (Label ("Nom du joueur", UI_SKIN)). Colspan (2), puis jouez avec center() et expandX() pour obtenir les positions de l'étiquette où vous voulez. –

Répondre

0

Vous pouvez le faire de cette façon

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) 

Et la sortie est:

enter image description here