To make a combined native and banner request, do the following:
Pass both NativeAdType.NATIVE type and NativeAdType.BANNER type as a
list in the NativeAdRequest.
Set at least one banner ad size.
The following examples loads a combined native and banner ad:
Kotlin
valadRequest=NativeAdRequest.Builder(AD_UNIT_ID,listOf(NativeAdType.NATIVE,NativeAdType.BANNER))// Use setAdSize() or setAdSizes() depending on if you want multiple ad sizes or not..setAdSizes(listOf(AdSize.BANNER,AdSize.LARGE_BANNER)).build()// Load the native and banner ad with the ad request and callback.NativeAdLoader.load(adRequest,getNativeAdLoaderCallback())
Java
NativeAdRequestadRequest=newNativeAdRequest.Builder(AD_UNIT_ID,List.of(NativeAdType.NATIVE,NativeAdType.BANNER))// Use setAdSize() or setAdSizes() depending on if you want multiple ad sizes or not..setAdSizes(Arrays.asList(AdSize.BANNER,AdSize.LARGE_BANNER)).build();// Load the native and banner ad with the ad request and callback.NativeAdLoader.load(adRequest,getNativeAdLoaderCallback());
Get the ad from the NativeAdLoaderCallback object
Depending on which type of ad has successfully loaded, the
NativeAdLoaderCallback object calls the onNativeAdLoaded() method for native
ads and the onBannerAdLoaded() method for banner ads.
The following example gets banner or native ads:
Kotlin
privatefungetNativeAdLoaderCallback():NativeAdLoaderCallback{returnobject:NativeAdLoaderCallback{overridefunonNativeAdLoaded(nativeAd:NativeAd){// Called when a native ad has loaded.}overridefunonBannerAdLoaded(bannerAd:BannerAd){// Called when a banner ad has loaded.}}}
Java
privateNativeAdLoaderCallbackgetNativeAdLoaderCallback(){returnnewNativeAdLoaderCallback(){@OverridepublicvoidonNativeAdLoaded(@NonNullNativeAdnativeAd){// Called when a native ad has loaded.}@OverridepublicvoidonBannerAdLoaded(@NonNullBannerAdbannerAd){// Called when a banner ad has loaded.}};}
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-09-04 UTC."],[],[],null,["With a few changes to your code, you can combine native and banner ads in your\nad requests.\n\nPrerequisites\n\n\u003cbr /\u003e\n\n- Complete the [Get started guide](/ad-manager/mobile-ads-sdk/android/early-access/nextgen/quick-start).\n\nLoad an ad\n\nTo make a combined native and banner request, do the following:\n\n1. Pass both `NativeAdType.NATIVE` type and `NativeAdType.BANNER` type as a\n list in the `NativeAdRequest`.\n\n2. Set at least one banner ad size.\n\nThe following examples loads a combined native and banner ad: \n\nKotlin \n\n val adRequest =\n NativeAdRequest.Builder(AD_UNIT_ID, listOf(NativeAdType.NATIVE, NativeAdType.BANNER))\n // Use setAdSize() or setAdSizes() depending on if you want multiple ad sizes or not.\n .setAdSizes(listOf(AdSize.BANNER, AdSize.LARGE_BANNER))\n .build()\n\n // Load the native and banner ad with the ad request and callback.\n NativeAdLoader.load(adRequest, getNativeAdLoaderCallback())\n\nJava \n\n NativeAdRequest adRequest =\n new NativeAdRequest.Builder(AD_UNIT_ID, List.of(NativeAdType.NATIVE, NativeAdType.BANNER))\n // Use setAdSize() or setAdSizes() depending on if you want multiple ad sizes or not.\n .setAdSizes(Arrays.asList(AdSize.BANNER, AdSize.LARGE_BANNER))\n .build();\n\n // Load the native and banner ad with the ad request and callback.\n NativeAdLoader.load(adRequest, getNativeAdLoaderCallback());\n\n| **Key Point:** You can only request banner ads through `NativeAdRequest` when you also request native ads. To make an ad request for banners alone, see [Banner](/ad-manager/mobile-ads-sdk/android/early-access/nextgen/banner). In addition, banners loaded through `NativeAdLoader` objects don't refresh.\n\nGet the ad from the `NativeAdLoaderCallback` object\n\nDepending on which type of ad has successfully loaded, the\n`NativeAdLoaderCallback` object calls the `onNativeAdLoaded()` method for native\nads and the `onBannerAdLoaded()` method for banner ads.\n\nThe following example gets banner or native ads: \n\nKotlin \n\n private fun getNativeAdLoaderCallback(): NativeAdLoaderCallback {\n return object : NativeAdLoaderCallback {\n override fun onNativeAdLoaded(nativeAd: NativeAd) {\n // Called when a native ad has loaded.\n }\n\n override fun onBannerAdLoaded(bannerAd: BannerAd) {\n // Called when a banner ad has loaded.\n }\n }\n }\n\nJava \n\n private NativeAdLoaderCallback getNativeAdLoaderCallback() {\n return new NativeAdLoaderCallback() {\n @Override\n public void onNativeAdLoaded(@NonNull NativeAd nativeAd) {\n // Called when a native ad has loaded.\n }\n\n @Override\n public void onBannerAdLoaded(@NonNull BannerAd bannerAd) {\n // Called when a banner ad has loaded.\n }\n };\n }"]]