Android Admob advert in PreferenceActivity

前端 未结 7 557
暖寄归人
暖寄归人 2020-12-04 22:32

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

相关标签:
7条回答
  • 2020-12-04 22:43
    ViewGroup viewGroup = (ViewGroup) findViewById(android.R.id.list).getParent().getParent().getParent();
    viewGroup.addView(new AdView(...));
    
    0 讨论(0)
  • 2020-12-04 22:45

    I implemented the proposed approach, but faced problem regarding placing the banner at the top and with padding issues. So, i used a different approach and interested to share with you. I was working on a preference activity, although it has been deprecated but i had to work on it for some reason instead of changing to androidx preference library.

    Here are the following steps:

    1. Get the parent of preference activity.

      LinearLayout root = (LinearLayout) 
      findViewById(android.R.id.list).getParent().getParent().getParent();
      
    2. Create a xml file named banner_ad.xml.

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:ads="http://schemas.android.com/apk/res-auto"
      android:orientation="vertical"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      <com.google.android.gms.ads.AdView
           android:id="@+id/adview"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           ads:adSize="SMART_BANNER"
           ads:adUnitId="@string/banner_id" />
      </LinearLayout>
      
    3. Inflate the layout.

      LinearLayout adViewLayout = (LinearLayout) 
      LayoutInflater.from(this).inflate(R.layout.banner_ad,root,false);
      AdView adView = adViewLayout.findViewById(R.id.adview);
      
    4. Load add.

      AdRequest adRequest = new AdRequest.Builder()
              .addTestDevice(device_id)
              .build();
      adView.loadAd(adRequest);
      
    5. Add layout view as a child of root view. In my case i used this below toolbar at index 1.

      root.addView(adViewLayout,1);
      
    0 讨论(0)
  • 2020-12-04 22:49

    There is some changes to P.Melch answer in Adpreference class is like below (because its not working with latest google play ads library):

        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();
    
            AdView   adView = new AdView(getContext());
            adView.setAdUnitId("<your ad id>");
                    adView.setAdSize(AdSize.BANNER);
            AdRequest adRequest = new AdRequest.Builder().build();
            adView.loadAd(adRequest);
            ((LinearLayout)view).addView(adView);
            return view;
        }
    }
    
    0 讨论(0)
  • 2020-12-04 22:49

    You just need to make a separate layout for ad and Add it to preference_screen.xml as PreferenceCategory. You can see the clear picture in the attached images layout

    preferenceScreen

    0 讨论(0)
  • 2020-12-04 22:50

    Yes, a PreferenceActivity is just a sub-class of ListActivity and, as with ListActivity, you can specify your own custom layout so long as it contains a ListView with an ID of android.R.id.list. So create whatever XML layout file you need containing a ListView and an AdView and use that layout for the PreferenceActivity.

    0 讨论(0)
  • 2020-12-04 22:50

    Dan Dyer's answer is correct. I would like to elaborate a bit, just to clarify by example.You can use a layout like this (called config.xml under res/layout).

    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    xmlns:myapp="http://schemas.android.com/apk/res/com.xxxx" android:layout_height="fill_parent"
                    android:layout_width="fill_parent">
    
        <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
    
        <com.admob.android.ads.AdView
                android:id="@+id/ad"
                android:layout_alignParentBottom="true"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                myapp:backgroundColor="#000000"
                myapp:primaryTextColor="#FFFFFF"
                myapp:secondaryTextColor="#CCCCCC"/>
    
    </RelativeLayout>
    

    In your Activity that extends PreferenceActivity you write something like this in the onCreate method;

      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.config);
      }
    
    0 讨论(0)
提交回复
热议问题