You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Libgdx中如何将非Stage直接子级的Table设为Stage尺寸

解决子Table匹配Stage尺寸的方案(父容器为Table时)

嘿,我完全get你的需求了——当子Table的父容器不是Stage而是已经铺满Stage的TableRoot时,要让子Table同步Stage的尺寸,还要每帧刷新并添加带动态内边距的StatusBox容器。这就给你把方案捋得明明白白:

核心问题:为什么setFillParent(true)对子Table没用?

setFillParent(true)这个方法只对直接挂载到Stage的Actor生效,它会强制Actor匹配Stage的尺寸。但如果父容器是另一个Table,这个方法就失效了——因为子Actor的尺寸是由父容器的布局规则说了算的。所以我们得换个思路:让子Table绑定父容器TableRoot的尺寸,既然TableRoot已经和Stage同尺寸了,子Table自然就会跟着Stage一起变化。

具体实现步骤

1. 确认父容器TableRoot的初始化(你已经做了,再核对下)

Table tableRoot = new Table();
tableRoot.setFillParent(true); // 这步让TableRoot完全匹配Stage尺寸
stage.addActor(tableRoot);

2. 创建子Table并绑定父容器尺寸

给你的StatusBoxesTable加上尺寸绑定,让它实时跟随TableRoot的大小变化:

Table statusBoxesTable = new Table();
// 关键操作:绑定父容器的宽高属性
statusBoxesTable.prefWidthProperty().bind(tableRoot.widthProperty());
statusBoxesTable.prefHeightProperty().bind(tableRoot.heightProperty());

// 把子Table添加到父Table的(0,0)位置,确保它占满整个父Table的单元格
tableRoot.add(statusBoxesTable, 0, 0);

3. 每帧刷新并添加动态StatusBox容器

因为StatusBox的内边距会动态变化,所以每帧要先清空旧的子节点,再重新创建添加:

@Override
public void act(float delta) {
    super.act(delta);
    
    // 先清空之前的容器,避免重复叠加导致布局混乱
    statusBoxesTable.getChildren().clear();
    
    // 循环创建4个包含StatusBox的Table容器
    for (int i = 0; i < 4; i++) {
        Table statusBoxContainer = new Table();
        StatusBox statusBox = new StatusBox();
        
        // 这里替换成你动态获取内边距的逻辑
        float dynamicPadding = getCurrentStatusBoxPadding(); 
        statusBoxContainer.add(statusBox).pad(dynamicPadding);
        
        // 把容器添加到StatusBoxesTable,设置布局规则(比如横向均分空间)
        statusBoxesTable.add(statusBoxContainer).expandX().fillX().space(10); // space是容器间的间距
    }
    
    // 如果需要两行两列的布局,可在循环到第2个后调用换行
    // if (i == 1) statusBoxesTable.row();
}

额外提醒

  • 要是想让4个StatusBox容器铺满整个子Table的高度,可以把expandX().fillX()换成expand().fill(),这样它们会同时均分宽高。
  • 确保StatusBox本身的尺寸设置合理,比如让它跟随容器大小,或者设置合适的prefWidth/prefHeight。
  • 每帧清空子节点是必须的,否则每帧都会新增节点,不仅布局乱还会占用多余内存。

内容的提问来源于stack exchange,提问作者Faithium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:38:29