Search code examples
javaandroidxmlandroid-constraintlayout

How can I set AdUnitId using Java?


Code in Java:

        mAdView = (AdView)findViewById(R.id.adView);
        mAdView.setAdSize(AdSize.BANNER);
        mAdView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
        AdRequest adRequest = new AdRequest.Builder().build();
        mAdView.loadAd(adRequest);

View in XML (I'm using Constraint Layout):

    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn"
        app:layout_constraintVertical_bias="1.0" />

The result:

enter image description here

How can I fix this?

I don't want to use "ads:adUnitId="ca-app-pub-3940256099942544/6300978111" in XML. I need to set AdUnitId in Java.


Solution

  • It is easier to include in XML else you have to remove from XML and build everything programmatically , even set position of banner container layout etc ..

       public class MyActivity extends Activity {
         private AdView mAdView;
    
         @Override
         public void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
    
             LinearLayout layout = new LinearLayout(this);
             layout.setOrientation(LinearLayout.VERTICAL);
    
             // Create a banner ad. The ad size and ad unit ID must be set before calling loadAd.
             mAdView = new AdView(this);
             mAdView.setAdSize(AdSize.SMART_BANNER);
             mAdView.setAdUnitId("myAdUnitId");
    
             // Create an ad request.
             AdRequest.Builder adRequestBuilder = new AdRequest.Builder();
    
             // Optionally populate the ad request builder.
             adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR);
    
             // Add the AdView to the view hierarchy.
             layout.addView(mAdView);
    
             // Start loading the ad.
             mAdView.loadAd(adRequestBuilder.build());
    
             setContentView(layout);
         }
    
         @Override
         public void onResume() {
             super.onResume();
    
             // Resume the AdView.
             mAdView.resume();
         }
    
         @Override
         public void onPause() {
             // Pause the AdView.
             mAdView.pause();
    
             super.onPause();
         }
    
         @Override
         public void onDestroy() {
             // Destroy the AdView.
             mAdView.destroy();
    
             super.onDestroy();
         }
     }
    

    https://developers.google.com/android/reference/com/google/android/gms/ads/AdView

    ****** update

    I think this will fit with what you need

    1- Replace banner in xml with LinearLayout

    2- make id= layout_banner_holder

    3- use this method for implement banner in it

    private void showBannerAds() {
    
            LinearLayout adBannerLayout = (LinearLayout) findViewById(R.id.layout_banner_holder);
    
            adView = new AdView(this);
            adView.setAdUnitId(ca-app-pub-3940256099942544/6300978111);
            adView.setAdSize(AdSize.SMART_BANNER);
            adBannerLayout.addView(adView);
    
            AdRequest adRequest;
    
                adRequest = new AdRequest.Builder().build();
    
            adView.loadAd(adRequest);
    
        }
    

    4- call it in oncreate

    showBannerAds();