Search code examples
androidadmob

Android Admob advert in PreferenceActivity


Is there a way to add an admob advert to a PreferenceActivity? How to?


Solution

  • What you can also do is to create a custom Preference that can be easily added to any preferences screen.

    Add a layout file called ad_layout.xml to your res/layout folder that will be filled later by AdMob.

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" android:orientation="vertical">  
    </LinearLayout>
    

    Create a class called AdPreference like that:

    package com.example.adpreference;
    
    import com.google.ads.AdRequest;
    import com.google.ads.AdSize;
    import com.google.ads.AdView;
    
    import android.app.Activity;
    import android.content.Context;
    import android.preference.Preference;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.LinearLayout;
    
    public class AdPreference extends Preference {
    
        public AdPreference(Context context, AttributeSet attrs, int defStyle) {super    (context, attrs, defStyle);}
        public AdPreference(Context context, AttributeSet attrs) {super(context, attrs);}
        public AdPreference(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, "<your add id>");
    
            ((LinearLayout)view).addView(adView);
    
            // Initiate a generic request to load it with an ad
            AdRequest request = new AdRequest();
            adView.loadAd(request);     
    
            return view;    
        }
    }
    

    Now in the preference xml file you can just add add any position you like (at the top or in between any other preferences ).

    <?xml version="1.0" encoding="utf-8"?>
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    
        ...
    
        <com.example.adpreference.AdPreference android:layout="@layout/ad_layout"/>
    
        ...
    </PreferenceScreen>