如何在对话框的右上角添加按钮在libgdx中?

时间:2015-04-21 11:36:07

标签: layout libgdx

我想在对话框的右上角添加关闭按钮。

我尝试使用setbounds和addactor,只是使用setsize和addactor添加和设置,但没有任何效果。我知道该对话框适用于表格布局,它有一个内容表和按钮。我不想使用这种布局,并将按钮放在此布局之外,就像在对话框的边框上一样。

我该怎么做?

应该是这样的:

enter image description here

3 个答案:

答案 0 :(得分:3)

我现在可以想出的最简单的解决方案是使用负面填充按钮来移动它"外面"它的细胞。

Button closeButton = new TextButton("X", skin, "default");
getTitleTable().add(closeButton).size(60, 40).padRight(-30).padTop(-20);

使用这个填充黑客你有问题,按钮将在你的对话框之外,默认情况下,Window会在执行Actor.hit(...)评估时检查你的窗口边界。

由于这个原因,我们需要禁用剪辑,但窗口的渲染取决于它。这就是为什么我们使用另一个黑客来启用它,仅用于渲染:

@Override
public void draw(Batch batch, float parentAlpha) {
    setClip(true);
    super.draw(batch, parentAlpha);
    setClip(false);
}

答案 1 :(得分:0)

执行以下操作:

private Stage stage;
private Window window; 
private Table table; 
@Override 
public void show() { 
      table = new Table(); 
      table.setSize(Gdx.graphics.getWidth() / 2 
      , Gdx.graphics.getHeight() / 5); 
      window = new Window("", skin); 
      window.setSize(table.getWidth(), table.getHeight()); 

      Button btnWindow = new Button(skin, "close"); 
      btnWindow.addListener(new ClickListener() { 
      @Override 
      public void clicked(InputEvent event, float x, float y) { 
             window.setVisible(false); 
         } 
      }); 
      window.addActor(btnWindow); 
      btnWindow.setSize(50, 50); 
      btnWindow.setPosition(window.getWidth() - btnWindow.getWidth() 
      , window.getHeight() - btnWindow.getHeight()); 

      table.addActor(window); 

      window.setModal(true); 
      table.setPosition(Gdx.graphics.getWidth() / 2 - window.getWidth() / 2 
                    , Gdx.graphics.getHeight() / 2 - window.getHeight() / 2 + 
     100); 
            window.addAction(Actions.sequence(Actions.alpha(0) 
                    , Actions.fadeIn(.1f) 
                    , Actions.moveTo(+50, +50, 1))); 
     stage.addActor(table); 
     } 

答案 2 :(得分:0)

我有类似的问题。经过this的搜索后,线程对我有所帮助。

基本上,要说出表中角色的对齐方式,以及说出表本身的对齐方式,是两件分开的事情。设置表格左上角的对齐方式将产生所需的行为。

        table = new Table();
        table.setFillParent(true);
        table.setSkin(usedSkin);
        table.setDebug(true);
        table.top().left();

        stage.addActor(table);
        table.add(exitBtn);