Android 演员的位置有时不会改变

Android 演员的位置有时不会改变,android,libgdx,scene2d,Android,Libgdx,Scene2d,我尝试了几乎所有我能做的,但我仍然不能理解这一点。当加载底部广告时,我使用以下方法之一更改演员的高度和y:setPosition+setSize、setY+setHeight和setBounds。几乎每7次从10个高度变化,但位置不是!。我在游戏类中使用adListener调用onAdLoad方法,它在屏幕中调用onAdLoad方法。我将Gdx.app.log放在onAdLoad Screen方法的末尾,它写入了演员的y坐标,它写入了新的y坐标,这是正确的,但当我从render方法写入y坐标时,

我尝试了几乎所有我能做的,但我仍然不能理解这一点。当加载底部广告时,我使用以下方法之一更改演员的高度和y:setPosition+setSize、setY+setHeight和setBounds。几乎每7次从10个高度变化,但位置不是!。我在游戏类中使用adListener调用onAdLoad方法,它在屏幕中调用onAdLoad方法。我将Gdx.app.log放在onAdLoad Screen方法的末尾,它写入了演员的y坐标,它写入了新的y坐标,这是正确的,但当我从render方法写入y坐标时,它是0。请帮我做这个

一些代码:

AndroidLauncher类onCreate方法:

    adView.setAdListener(new AdListener() {
        @Override
        public void onAdLoaded() {
            Gdx.app.log("AdView:", "AdLoaded");
            if (adView.getVisibility() == View.VISIBLE)
                game.onAdLoad(adView.getHeight());
        }
    });
游戏类别:

public void onAdLoad(int adHeight) {
    adsHeight = adHeight;
    MyScreen activeScreen = ((MyScreen) getScreen());
    if (activeScreen != null) {
        activeScreen.onAdLoad();
    }
}
MyScreen界面:

public interface MyScreen extends Screen {
    void onAdLoad();
}
和其中一个屏幕:

private Table mainMenu;

@Override
public void onAdLoad() {
    float adsHeight = MyGdxGame.adsHeight;
//        mainMenu.setBounds(0, adsHeight, Gdx.graphics.getWidth(),Gdx.graphics.getHeight() - adsHeight);
    Gdx.app.log("onAdLoad",adsHeight+"");
    mainMenu.setHeight(Gdx.graphics.getHeight() - adsHeight);
    mainMenu.setY(adsHeight);
    Gdx.app.log("onAdLoad", mainMenu.getY() + "");
//        mainMenu.setPosition(0, adsHeight);
//        mainMenu.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight() - adsHeight);
//        mainMenu.layout();
}
UPD:这也不起作用:

public void onAdLoad() {
    //...
    stage.getActors().clear();
    stage.addActor(mainMenu);
}

在为参与者设置新位置后,您是否尝试调用requestLayout?请给我们一些代码和解释。真的很难判断到底发生了什么。我在onAdLoad的末尾尝试了actor.layout,但没有任何帮助。你是否尝试过将该演员移除并重新添加到舞台上?是的,我尝试过,它不起作用。没有更多建议吗?我真的需要帮助!