4

I'm trying to show an ad in the preference activity but it never appears. Logcat always shows the message "Not enough space to show ad! Wants: <480, 75>, Has: <432, 1073741823>"

This is how I create the ad. I have a custom preference with the ad

public class AdmobPreference extends Preference {

public AdmobPreference(Context context, AttributeSet attrs, int defStyle) {super    (context, attrs, defStyle);}
public AdmobPreference(Context context, AttributeSet attrs) {super(context, attrs);}
public AdmobPreference(Context context) {super(context);}

@Override
protected View onCreateView(ViewGroup parent) {
    // this will create the linear layout defined in ads_layout.xml
    View view = super.onCreateView(parent);

    // the context is a PreferenceActivity
    Activity activity = (Activity)getContext();

    // Create the adView
    AdView adView = new AdView(activity, AdSize.BANNER, "MY KEY");

    ((LinearLayout)view).addView(adView);

    // Initiate a generic request to load it with an ad
    AdRequest request = new AdRequest();
    adView.loadAd(request);     

    return view;    
}
}

Then I have a layout the ad is put into

<?xml version="1.0" encoding="utf-8"?>

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

</LinearLayout>

And it is put into the the preferences xml with this line:

<com.my.package.name android:layout="@layout/admob_preference" />

I can change it so the layout is set to width=480dip height=75dip instead of wrap_content. This does display the ad but it is pushed to the right of the screen and takes up a little less than half the size it's meant to (and cuts off half the ad).

user1104351
  • 173
  • 1
  • 6

3 Answers3

0

I'm assuming you tried to follow this example: Android Admob advert in PreferenceActivity

I think that what is wrong is: You extended a 'Preference' but then you are trying to define a Linear Layout from it. Instead, just add it directly to your preference screen.

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

...

<com.example.AdmobPreference android:layout="@layout/admob_preference"/>

...
</PreferenceScreen>
Community
  • 1
  • 1
hatcyl
  • 2,190
  • 2
  • 21
  • 24
0

see similar question

Setting the padding of the parent viewGroup to 0 solved this issue for me.

@Override
protected View onCreateView(ViewGroup parent) {
    //Next line solves the error by adjusting the padding of the parent ViewGroup
    parent.setPadding(0, 0, 0, 0);

    // this will create the linear layout defined in ads_layout.xml
    View view = super.onCreateView(parent);

    // the context is a PreferenceActivity
    Activity activity = (Activity)getContext();

    // Create the adView
    AdView adView = new AdView(activity, AdSize.BANNER, "MY KEY");

    ((LinearLayout)view).addView(adView);

    // Initiate a generic request to load it with an ad
    AdRequest request = new AdRequest();
    adView.loadAd(request);     

    return view;    
}
Community
  • 1
  • 1
Steven De Bock
  • 429
  • 4
  • 21
0

This can easily be solved by using AdSize.FLUID or AdSize.SMART_BANNER as it dynamically adjusts the width and height of the AD. for more info AdSize