2016-07-21 23 views
1

Ich versuche, diese table auf dem unteren Bildschirm zu bekommen. Zuerst habe ich zwei Tabelle auf Root-Tabelle hinzugefügt. Jede Tabelle hat vier Zellen.
das ist mein Code. Wie kann das gemacht werden? Dieser Code funktioniert nicht.libgdx scene2d add multi Tabelle

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

    Table table1 = new Table(); 
    table1.setFillParent(true); 

    Table table2 = new Table(); 
    table2.setFillParent(true); 
      . 
      . 
      . 

    table2.add(image1).size(image1.getWidth(), image1.getHeight()); 
    table3.add(image2).size(image2.getWidth(), image2.getHeight()); 
    table3.add(image3).size(image3.getWidth(), image3.getHeight()); 
    table3.add(image4).size(image4.getWidth(), image4.getHeight()); 
    table3.add(image5).size(image5.getWidth(), image5.getHeight()); 
    table2.add(table3); 
    table2.row(); 
    table2.add(image6).size(image6.getWidth(), image6.getHeight()); 
    table2.add(image7).size(image7.getWidth(), image7.getHeight()); 
    table2.add(image8).size(image8.getWidth(), image8.getHeight()); 
    table2.add(); 
    table1.add(table2); 
    table.add(table1).expandX(); 

    table5.add(image9).size(image9.getWidth(), image9.getHeight()); 
    table6.add(image10).size(image10.getWidth(), image10.getHeight()); 
    table6.add(image11).size(image11.getWidth(), image11.getHeight()); 
    table6.add(image12).size(image12.getWidth(), image12.getHeight()); 
    table6.add(image13).size(image13.getWidth(), image13.getHeight()); 
    table5.add(table6); 
    table5.row(); 
    table5.add(image6).size(image6.getWidth(), image6.getHeight()); 
    table5.add(image7).size(image7.getWidth(), image7.getHeight()); 
    table5.add(image8).size(image8.getWidth(), image8.getHeight()); 
    table5.add(); 
    table4.add(table5); 
    table.add(table4).expandX(); 

Antwort

1

Für jede der beiden Stammtische, würde ich es einen 4x2 Tisch machen, wo die erste Zelle drei Spalten umfasst, und die zweite Zelle enthält eine innere Tabelle für die vier Zellen.

Ich würde auch Helfer-Methoden, wo möglich, um Redundanz zu reduzieren, um es einfacher zu zwicken machen. Versuchen Sie damit (ungetestet):

private static Cell addSizedImage(Table table, Image image){ 
    return table.add(image).size(image.getWidth(), image.getHeight()); 
} 

private static Table generateBlock (Image... imgs){ 
    if (imgs.length != 8) throw new UnsupportedOperationException("Must have 8 images"); 
    Table root = new Table(); 
    addSizedImage(root, imgs[0]).colspan(3); 

    Table innerTable = new Table(); 
    addSizedImage(innerTable, imgs[1]); 
    addSizedImage(innerTable, imgs[2]).row(); 
    addSizedImage(innerTable, imgs[3]); 
    addSizedImage(innerTable, imgs[4]); 

    root.add(innerTable).row(); 

    addSizedImage(root, imgs[5]); 
    addSizedImage(root, imgs[6]); 
    addSizedImage(root, imgs[7]); 

    return root; 
} 

private Table createImagesUI(){ 
    Table root = new Table(); 
    root.setFillParent(true); 
    root.bottom(); 

    root.add(generateBlock(image1, image2, image3, image4, image5, image6, image7, image8)).expandX(); 
    root.add(generateBlock(image9, image10, image11, image12, image13, image14, image15, image16)).expandX(); 

    return root; 
} 
+0

Vielen Dank, gute Idee. – infoman