Search code examples
androidadmobadsadview

Adview from Admob shows blank box if no Internet connection


I just tried to include an Adview in my layout. Works just fine, except that it shows a blank space if there is no Internet connection. As I have read so far, I understand that the standard behaviour for an admob is to take space only if the Ad is shown. Otherwise, eg. no Internet connection, it should take no layout space. I'm listing the code where I think I might have made a mistake and that's why I encounter this odd behaviour...

<LinearLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       xmlns:ads="http://schemas.android.com/apk/res-auto"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:orientation="vertical"
       android:background="#FFFFFF"
       android:weightSum="1">

    <android.support.v7.widget.Toolbar
       android:id="@+id/toolbar"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:background="?attr/colorPrimary"
       android:theme="@style/AppTheme.AppBarOverlay"
       app:popupTheme="@style/AppTheme.PopupOverlay" />

    <include layout="@layout/content_main"
       android:layout_width="match_parent"
       android:layout_height="0dp"
       android:layout_weight="1"
       app:layout_behavior="@string/appbar_scrolling_view_behavior"/>


    <com.google.android.gms.ads.AdView
      android:id="@+id/adView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      ads:adSize="BANNER"
      ads:adUnitId="@string/banner_ad_unit_id">
    </com.google.android.gms.ads.AdView>
</LinearLayout>

Then, in app gradle:

dependencies {
 compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support:design:23.4.0'
    compile 'com.google.firebase:firebase-core:9.2.0'
    compile 'com.google.firebase:firebase-ads:9.2.0'
 }
apply plugin: 'com.google.gms.google-services'

And in module gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0'
    classpath 'com.google.gms:google-services:3.0.0'

I think I have done something wrong, so please help me with an advice. Thank you!


Solution

  • Add this Code to your class file

    AdView adView = (AdView)findViewById(R.id.adView);
        AdRequest adRequest = new AdRequest.Builder().build();
        adView.loadAd(adRequest);
    adView.setAdListener(new AdListener() {
            @Override
            public void onAdLoaded() {
                super.onAdLoaded();
                adView.setVisibility(View.VISIBLE);
            }
    
            @Override
            public void onAdFailedToLoad(int errorCode) {
                super.onAdFailedToLoad(errorCode);
                adView.setVisibility(View.GONE);
            }
        });