LibGDX ScrollPane不会绘制ImageButton

时间:2017-03-21 07:47:21

标签: android libgdx imagebutton scrollpane

我是LibGDX API的新手,我试图在表格内部组织标签和ImageButtons(以及这些表格中的表格)。当我运行应用程序时,ImageButtons没有被绘制到屏幕上。

我到处搜索,找不到答案,所以我真的很感激帮助。

编辑:可能是因为我在表格中使用表格,但我没有找到任何关于嵌套表格的内容,或者其他任何类似内容的表格。

我在渲染中调用一个方法来保持标签的文本更改,如下所示:

public void drawTable(){
    final Table scrollTable = new Table();
    scrollTable.addActor(canbtn);
    scrollTable.row();
    //other buttons

    Label.LabelStyle style = new Label.LabelStyle(font, Color.WHITE);
    Label.LabelStyle style2 = new Label.LabelStyle(font2, Color.WHITE);

    CustomLabel amtLabel = new CustomLabel("" + (int)(game.tot.getSum()), style);
    CustomLabel mizcoins = new CustomLabel("Mizcoins", style2);
    CustomLabel mpsCount = new CustomLabel(game.totMPS + " MPS", style2);

    PerSec can = game.boosts.get("Can").getPerSec();

    Table t = new Table();
    t.add(drawer(can, canbtn));
    t.row();
    scroller = new ScrollPane(t);

    table = new Table(); //the container table
    table.setFillParent(true);
    table.add(amtLabel).padTop(50);
    table.row();
    table.add(mizcoins);
    table.row();
    table.add(mpsCount);
    table.row();
    table.add(scroller).fill().expand();//.space(350).padBottom(10);
}

抽屉()功能:

public Table drawer(PerSec perSec, ImageButton imgbtn){
    Label.LabelStyle style = new Label.LabelStyle(font2, Color.WHITE);
    Label.LabelStyle style2 = new Label.LabelStyle(font2, Color.WHITE);
    Label.LabelStyle style3 = new Label.LabelStyle(font2, Color.RED);

    CustomLabel nameLabel = new CustomLabel(perSec.getType(), style);
    CustomLabel priceLabel = new CustomLabel("Price: " + perSec.getPrice(), style2);
    CustomLabel addsLabel = new CustomLabel("Adds: " + perSec.getDefAddPerSec(), style2);
    CustomLabel youHaveLabel = new CustomLabel("You Have: " + perSec.getAmt(), style3);

    Table mainTable = new Table();
    Table smallTable = new Table();

    smallTable.add(priceLabel);
    smallTable.row();
    smallTable.add(youHaveLabel);

    mainTable.add(nameLabel);
    mainTable.add(imgbtn);
    mainTable.row();
    mainTable.add(smallTable);
    mainTable.add(addsLabel);

    return mainTable;

}

1 个答案:

答案 0 :(得分:0)

一些伪代码向您展示如何创建这样的表格(如评论中的图片所述)

private void setupScrollPane()
{
    ScrollPane pane = new ScrollPane(generatePanels());
    pane.setBounds(0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
    stage.addActor(pane);
}

private Table generatePanels()
{
    Table list = new Table();
    for(int i=0;i<2;i++)
    {
        list.add(genetePanel()).row();
    }
    return list;
}

private Table genetePanel()
{
    Table root = new Table();
    root.setSize(400,200);

    Table left = new Table();
    Table middle = new Table();
    Table right = new Table();

    left.add().growY().row();       //an empty row for padding
    left.add(new Label("Price label")).row();
    left.add(new Label("you have label")).row();
    left.add().growY().row();       //an empty row for padding

    middle.add(new Label("Name label")).row();
    middle.add().growY().row(); //an empty row for padding

    right.add(new ImageButton()).row();
    right.add(new Label("Adds label")).row();

    root.add(left).growX();
    root.add(middle).growX();
    root.add(right).growX();
}