Android 谷歌服务广告在加载广告时的行为与AdMob SDK不同?

Android 谷歌服务广告在加载广告时的行为与AdMob SDK不同?,android,admob,ads,Android,Admob,Ads,我最近将我的项目从AdMob SDK迁移到了谷歌服务广告,但我发现谷歌服务广告有一个小问题 我在活动中有一个横幅广告视图,我会根据是否加载广告动态调整版面中的按钮。当我使用AdMob SDK时,它工作得很好,但现在使用Google服务广告时,在加载广告之前,横幅总是保留为空白。如果广告无法加载(比如说没有网络),空白视图就在那里,这是相当丑陋的!这也是为什么我想动态调整布局 我更改代码时有没有遗漏什么?谢谢你的帮助 以下是java代码和布局文件的摘录: 爪哇: 布局XML: ... <

我最近将我的项目从AdMob SDK迁移到了谷歌服务广告,但我发现谷歌服务广告有一个小问题

我在活动中有一个横幅广告视图,我会根据是否加载广告动态调整版面中的按钮。当我使用AdMob SDK时,它工作得很好,但现在使用Google服务广告时,在加载广告之前,横幅总是保留为空白。如果广告无法加载(比如说没有网络),空白视图就在那里,这是相当丑陋的!这也是为什么我想动态调整布局

我更改代码时有没有遗漏什么?谢谢你的帮助

以下是java代码和布局文件的摘录:

爪哇:

布局XML:

...
  <com.google.android.gms.ads.AdView
    android:id="@+id/ad"
    android:layout_alignParentBottom="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ads:adUnitId="AD_PUB_ID"
    ads:adSize="BANNER"/>
</RelativeLayout>
。。。

您可以添加AdListener,并使广告仅在收到广告时可见

代码如下所示:

        final AdView ad = new AdView(context);
        ad.setAdUnitId(publisherId);
        ad.setAdSize(AdSize.SMART_BANNER);

        final AdListener listener = new AdListener() {
            @Override
            public void onAdLoaded() {
                ad.setVisibility(View.VISIBLE);
                super.onAdLoaded();
            }
        };

        ad.setAdListener(listener);
        ad.setVisibility(View.GONE);

        adParent.addView(ad);
        ad.loadAd(new AdRequest.Builder().build());

由于存在/曾经存在一个问题,AdMob ad在仍在加载时被销毁时会生成一个ANR。在调用
pause()
destroy()
之前,我通常还会检查广告的可见性,因为这样弹出广告横幅是违反谷歌广告政策的。 一个月前,我收到了一封来自谷歌的邮件,为了避免我的应用被禁止进入游戏商店,我不得不改变这种行为。
很多开发人员都收到了相同的邮件。

总之,在广告加载Google服务广告之前,我如何让adView不占用任何空间?你能把你的.java类放在你集成admob的地方吗。还有舱单。@MohitRakhra,谢谢你的回答。我完全按照建议进行了迁移。无论如何,我会在问题中发布文件内容。非常感谢。非常感谢你的回答!如果我不知道哪里出了问题,我想我应该用它。基本上,我认为代码和布局迁移到Google service API相当于AdMob SDK,因此我希望它的行为与以前一样。新API的默认行为是始终显示视图。这真的改变了,和以前不一样了。再次感谢你!现在我的疑问已经消除了,但是你能告诉我谷歌网站上描述的变化吗?我非常感激!我确实没有弹出广告横幅。我试图做的是根据广告加载的状态动态地决定布局。我讨厌弹出广告,这很烦人。我知道,但结果是一样的。根据广告加载的成功,横幅将随时弹出(如果您愿意,横幅将立即显示),但如果用户按下横幅位置附近的控件,他可能会意外按下横幅。因此,谷歌现在强制将部分屏幕保留在广告横幅上,即使没有什么可显示OK,这是有道理的。。。但在那里留下一些空白屏幕看起来真的很奇怪……如果用户没有互联网连接怎么办?然后没有DAS可以显示,所以在我看来,空白的AdVIEW应该消失了……没有广告横幅现在作为占位符。如果没有什么可显示,它将显示一个空白,否则广告将显示空白
        final AdView ad = new AdView(context);
        ad.setAdUnitId(publisherId);
        ad.setAdSize(AdSize.SMART_BANNER);

        final AdListener listener = new AdListener() {
            @Override
            public void onAdLoaded() {
                ad.setVisibility(View.VISIBLE);
                super.onAdLoaded();
            }
        };

        ad.setAdListener(listener);
        ad.setVisibility(View.GONE);

        adParent.addView(ad);
        ad.loadAd(new AdRequest.Builder().build());