我想在对话框的右上角添加关闭按钮。
我尝试使用setbounds和addactor,只是使用setsize和addactor添加和设置,但没有任何效果。我知道该对话框适用于表格布局,它有一个内容表和按钮。我不想使用这种布局,并将按钮放在此布局之外,就像在对话框的边框上一样。
我该怎么做?
应该是这样的:
答案 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);