2016-07-21 2 views
1

Я пытаюсь получить это table на нижнем экране. Сначала я добавил две таблицы на корневую таблицу. Каждая таблица имеет четыре ячейки.
это мой код. Как это можно сделать. Этот код не работает.libgdx scene2d add multi table

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(); 

ответ

1

Для каждого из двух корневых таблиц, я сделал бы это таблица 4х2, где сама первая ячейка охватывает три столбца, а вторая ячейка содержит одну внутреннюю таблицу для четырех ячеек.

Я бы также использовал вспомогательные методы, где это возможно, чтобы сократить избыточность, чтобы упростить настройку. Попробуйте начать с этого (непроверенный):

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

Большое вам спасибо, хорошая идея. – infoman

Смежные вопросы