dialog 设置窗口大小无效

来源:互联网 发布:青岛安全网络教育平台 编辑:程序博客网 时间:2024/05/16 19:43

引出

最近使用 dialog 时,发现设置 dialog 的窗口固定大小无效问题。

public static Dialog showOkDialog(Stage stage, String title, String text, Skin skin) {    final Dialog dialog = new Dialog(title, skin);    dialog.text(text).button("confirm", true).key(Keys.ENTER, true).key(Keys.ESCAPE, true);    dialog.setSize(400, 300);    dialog.getContentTable().pad(50, 30, 50, 30);    dialog.getButtonTable().pad(50);    return dialog.show(stage);}

使用如下方法设置窗口大小无效。

void com.badlogic.gdx.scenes.scene2d.Actor.setSize(float width, float height)

查看源码后发现,调用 show 方法内部处理问题

这里写图片描述

pack() 方法跳转到 【com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup】
这里写图片描述
在该 pack 方法内会重新调用 setSize 方法。


解决

so 这下知道怎么回事了。只需要在 show 方法后调用 setSize 方法

public static Dialog showOkDialog(Stage stage, String title, String text, Skin skin) {    final Dialog dialog = new Dialog(title, skin);    dialog.text(text).button("confirm", true).key(Keys.ENTER, true).key(Keys.ESCAPE, true);    dialog.getContentTable().pad(50, 30, 50, 30);    dialog.getButtonTable().pad(50);    dialog.show(stage);    // 该方法必须在 dialog show 方法调用之后使用    dialog.setSize(GlobalData.WIDTH / 3, GlobalData.HEIGHT / 3);    // 注意 重新设置 size 后。位置不是屏幕居中了。若有需要,需要重新设置    return dialog;}
0 0
原创粉丝点击