AdMob消失后的空白空间

时间:2011-06-16 18:32:27

标签: android layout

我有布局结构:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" >
  <com.google.ads.AdView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   ads:adSize="BANNER"
  />

  <LinearLayout style="@style/TitleBar"
   android:layout_width="fill_parent"
   android:layout_height="45dip"
    // title bar
  </LinearLayout>

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  // main layout with all needed elements and background!" >

</RelativeLayout>
</LinearLayout>

一切都很好,直到我的AdMob消失。然后,我可以看到具有admob大小的空黑区域。

更新:我的屏幕截图: enter image description here

通常我会看到这里的广告拦截,但是当我获得onFailedToReceiveAd(广告请求成功,但由于缺少广告资源而没有广告返回。)广告消息,我的布局没有填满所有屏幕。

4 个答案:

答案 0 :(得分:5)

你所描述的看起来很奇怪...... 我认为导致广告消失的原因是广告被刷新,然后由于AdMob方面缺少广告而没有投放广告。 但是,根据我自己的测试,一旦广告加载,如果后续广告刷新失败,之前的广告仍然显示,我还没有看到广告'消失'。

也许您可以查看logcat并查看是否有任何错误。

以下是我用于在自己的应用上测试广告请求投放/失败的一些代码。 如果在广告加载失败后出现空白,我想您可以在onFailedToReceiveAd中添加一些代码来调整AdView的大小

AdView av = (AdView)findViewById(R.id.adView);

        // Set AdListener
        av.setAdListener(new AdListener() {
            AdView av = (AdView)findViewById(R.id.adView);
            @Override
            public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
                System.err.println("Ad failed: " + ad.toString() + error.toString());
                av.setVisibility(AdView.GONE);//By setting visibility to GONE, you hide the AdView, but the AdView won't refresh automaticaly anymore.

            }

            @Override
            public void onReceiveAd(Ad ad) {
                System.out.println("Ad received: " + ad.toString());
                av.setVisibility(AdView.VISIBLE);
            }
        });

        // Create an ad request.
        AdRequest adRequest = new AdRequest();

        // Start loading the ad in the background.
        av.loadAd(adRequest);

答案 1 :(得分:2)

要确认您的adView是否将此作为高度参数?

android:layout_height="wrap_content"

答案 2 :(得分:2)

另一种看待此问题的方法是在AdMob中设置自己的“自家广告”以定位您的应用。然后,当AdMob没有要投放的广告时,它会显示您自己的广告以“填空”。

答案 3 :(得分:1)

使用“设置可见性”功能将其从布局中删除。

SetVisibility()

Check this post also on hiding the AdView