Android:添加Admob标语,但主视图不重叠

问题描述

| 我正在尝试将Admob标语添加自定义SurfaceView(我的主游戏屏幕)。我可以将横幅广告放在屏幕的顶部或底部,但在两种情况下,它都与游戏屏幕重叠(并隐藏了一些必要的UI元素)。如何在进入时获得横幅来调整游戏屏幕的大小,使其不重叠任何东西? 该线程提供了一个xml解决方案:如何使广告显示在屏幕底部而不会出现重叠,但是由于我的视图是用Java编写的,因此我需要一种以编程方式进行处理的方法。我尝试翻译它,但是在实现代码时没有显示横幅。以下是两个解决方案,第一个不显示任何横幅,第二个在底部显示一个横幅,但有重叠。我需要更改哪些参数才能消除重叠?
/* Admob advert on Android done programmatically! */
    adView = new AdView(this,AdSize.BANNER,\"a14dc6ed8aead31\");
    gameView = new GameView(this,gameEng,adView);

    //no banner displays with this code
    RelativeLayout rl = new RelativeLayout(this);
    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.FILL_PARENT);
    RelativeLayout.LayoutParams gameViewParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BottOM);
    gameViewParams.addRule(RelativeLayout.ABOVE);
    rl.addView(adView,adParams);
    rl.addView(gameView,gameViewParams);
    setContentView(rl);

    //a banner at the bottom displays,but it overlaps my game screen
    /*FrameLayout layout = new FrameLayout(this);
    FrameLayout.LayoutParams gameParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.FILL_PARENT);
    FrameLayout.LayoutParams adsParams =new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT,FrameLayout.LayoutParams.WRAP_CONTENT,android.view.Gravity.BottOM|android.view.Gravity.CENTER_HORIZONTAL); 
    layout.addView(gameView,gameParams);
    layout.addView(adView,adsParams);
    setContentView(layout);*/

    AdRequest request = new AdRequest();
    request.setTesting(true);
    adView.loadAd(request);
    

解决方法

我从来没有解决过这个问题,但是我找到了解决方法。以防万一其他人遇到这个问题,请尝试仅将所有绘图坐标向上移动:减去广告横幅的高度(您可以使用getHeight()方法得到它。 ))。 不过,广告横幅不会立即加载,因此您必须继续对其进行检查。我在主游戏循环中做到了这一点。