таблица libgdx с равным расстоянием между кнопками

#java #user-interface #button #libgdx

#java #пользовательский интерфейс #кнопка #libgdx

Вопрос:

Я пытаюсь получить равное пространство между моими кнопками по экрану для любого размера экрана (ширины). Я использую таблицы Libgdx внутри сцены. Я думаю, что моя логика на правильном пути, но она не возвращает ничего близкого к тому, что я хочу.. большинство кнопок не отображаются на экране. (Всего у меня 5 кнопок)

     int width = Gdx.graphics.getWidth();
    int spacing = width / 5;
    System.out.println(width);
    System.out.println(spacing);

    //BOTTOM TABLE
    tableBottom = new Table(skin);
    stage.addActor(tableBottom);
    tableBottom.setBounds(0,0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    tableBottom.setFillParent(true);
    tableBottom.columnDefaults(1).width(spacing);
    tableBottom.add(inventoryButton).size(144,160).center();
    tableBottom.add(assignButton).size(148,180).center();
    tableBottom.add(shopButton).size(130,152).center();
    tableBottom.add(collectButton).size(182,198).center();
    tableBottom.add(fightButton).size(162,178).center();
 

Как запрошенные изображения:

Это то, что делает приведенный выше код! и это не точно, оно отличается в зависимости от размера экрана.

что происходит

Вот как я ХОЧУ, чтобы это выглядело. На экране любого размера равное расстояние и занимает всю нижнюю часть .. очевидно, что на большом экране они будут не так близко друг к другу, но это нормально! спасибо, что боролся с этим.

что я хочу, чтобы это делало

Комментарии:

1. Может быть, вы можете опубликовать фотографию того, что у вас есть, и того, что вы хотите?

2. @grimrader 22 Я ОТРЕДАКТИРОВАЛ сообщение, включив в него картинки, спасибо!

3. Ну, это то, что я могу уменьшить и заставить его выглядеть нормально… Но когда я захожу на планшет, например, это не то же расстояние, что и на телефоне Android… Мне нужно динамически изменять интервал в зависимости от ширины экрана. Это то, что, как я думал, я делал, беря ширину экрана и перемещая его по кнопкам и используя это с интервалом, но это выталкивает их за пределы экрана.

4. Что, если вы .width(spacing) полностью удалите? а .center() s?

5. .width(интервал) задает ширину ячейки таблицы по умолчанию, а center помещает ее в центр этого столбца ячеек. Моя логика заключается в том, чтобы взять ширину экрана и сделать 5 равных ячеек по ширине, а затем разместить кнопки в центре каждой из этих ячеек. Но он запускается на экране и не делает того, что я ожидаю.. Должен быть способ, которым люди это делают.

Ответ №1:

Чтобы получить равный интервал в горизонтальном направлении, измените

 tableBottom.add(inventoryButton).size(144,160).center();
tableBottom.add(assignButton).size(148,180).center();
tableBottom.add(shopButton).size(130,152).center();
tableBottom.add(collectButton).size(182,198).center();
tableBottom.add(fightButton).size(162,178).center();
 

Для

 tableBottom.add(inventoryButton).size(144,160).expandX();
tableBottom.add(assignButton).size(148,180).expandX();
tableBottom.add(shopButton).size(130,152).expandX();
tableBottom.add(collectButton).size(182,198).expandX();
tableBottom.add(fightButton).size(162,178).expandX();