Share your feedback about the Google Mobile Ads SDK! Take the annual survey.

Native Templates

Download Native Templates

Using native ads you can customize your ads resulting in a better user experience. Better user experiences can increase engagement and improve your overall yield.

In order to get the most out of native ads, it's important to style your ad layouts so that they feel like a natural extension of your app. To help you get started, we've created Native Templates.

Native Templates are code-complete views for your native ads, designed for fast implementation and easy modification. With Native Templates, you can implement your first native ad in just a few minutes, and you can quickly customize the look and feel without a lot of code. You can place these templates anywhere you want, such as in a recycler view used in a news feed, in a dialog, or anywhere else in your app.

Our native templates are provided as an Android Studio module, so it's easy to include them in your project and use them however you like.

Template sizes

There are two templates: small and medium. They both use the TemplateView class and both have a fixed aspect ratio. They will scale to fill the width of their parent views.

Small template

@layout/gnt_small_template_view

The small template is ideal for recycler views, or any time you need a long rectangular ad view. For instance you could use it for in-feed ads.

Medium template

@layout/gnt_medium_template_view

The medium template is meant to be a one-half to three-quarter page view but can also be used in feeds. It is good for landing pages or splash pages.

Feel free to experiment with placement. Of course, you can also change the source code and XML files to suit your requirements.

Installing the native ad templates

To install the native templates, simply download the zip file (using the clone or download option on GitHub) and import the module into your existing Android Studio project.

  1. Choose File > New > Import Module.

  2. Select the nativetemplates folder.

    import native template

  3. Add the following line to your app-level build.gradle file:

    dependencies {
            ...
            implementation project(':NativeTemplatesAndroid-1.0.0'))
            ...
    }
    

Using the native ad templates

You can use the template in any layout XML file, like any other view group.

add template to layout

Using the templates is a two-step process:

  1. First, you need to include the template as part of your layout.

    <LinearLayout
       xmlns:android="http://schemas.android.com/apk/res/android"
       xmlns:app="http://schemas.android.com/apk/res-auto"
       xmlns:tools="http://schemas.android.com/tools"
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       tools:context=".MainActivity"
       tools:showIn="@layout/activity_main" >
    
    <!--  This is your template view -->
    <com.google.android.ads.nativetemplates.TemplateView
       android:id="@+id/my_template"
       <!-- this attribute determines which template is used. The other option is
        @layout/gnt_medium_template_view -->
       app:gnt_template_type="@layout/gnt_small_template_view"
       android:layout_width="match_parent"
       android:layout_height="match_parent" />
    
    ...
    </LinearLayout>
    
  2. Next, you need to give your template your native ad when it loads:

    MobileAds.initialize(this, "[_app-id_]");
     AdLoader adLoader = new AdLoader.Builder(this, "[_ad-unit-id_]")
         .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
           @Override
           public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
              NativeTemplateStyle styles = new
                  NativeTemplateStyle.Builder().withMainBackgroundColor(background).build();
    
              TemplateView template = findViewById(R.id.my_template);
              template.setStyles(styles);
              template.setNativeAd(unifiedNativeAd);
    
            }
         })
         .build();
    
       adLoader.loadAd(new PublisherAdRequest.Builder().build());
    }
    

Styles dictionary keys

There are two ways to style your template: using traditional layout XML and using our NativeTemplateStyle.Builder object. The above code sample demonstrates how to use the NativeTemplateStyle.Builder object to set the main background color, but there are a variety of other options as well. Here are all of the available builder methods. The builder returns a NativeTemplateStyle object which overrides any XML layout styling. The XML layouts gnt_small_template.xml and gnt_medium_template.xml use the same Android styling parameters that you are already familiar with.

Builder methods for native template style
withCallToActionTextTypeface Typeface callToActionTextTypeface

The typeface for the call to action.

withCallToActionTextSize float callToActionTextSize

The size of the call to action text.

withCallToActionTypefaceColor int callToActionTypefaceColor

The color of the call to action text.

withCallToActionBackgroundColor ColorDrawable callToActionBackgroundColor

The background color of the call to action.

withPrimaryTextTypeface Typeface primaryTextTypeface

The typeface of the first row of text.

withPrimaryTextSize float primaryTextSize

The size of the first row of text.

withPrimaryTextTypefaceColor int primaryTextTypefaceColor

The color of the first row of text.

withPrimaryTextBackgroundColor ColorDrawable primaryTextBackgroundColor

The background color of the first row of text.

withSecondaryTextTypeface Typeface secondaryTextTypeface

The typeface of the second row of text.

withSecondaryTextSize float secondaryTextSize

The size of the second row of text.

withSecondaryTextTypefaceColor int secondaryTextTypefaceColor

The text color of the second row of text.

withSecondaryTextBackgroundColor ColorDrawable secondaryTextBackgroundColor

The background color of the second row of text.

withTertiaryTextTypeface Typeface tertiaryTextTypeface

The typeface of the third row of text.

withTertiaryTextSize float tertiaryTextSize

The size of the third row of text.

withTertiaryTextTypefaceColor int tertiaryTextTypefaceColor

The text color of the third row of text.

withTertiaryTextBackgroundColor ColorDrawable tertiaryTextBackgroundColor

The background color of the third row of text.

withMainBackgroundColor ColorDrawable mainBackgroundColor

The main background color.

Contribute

We've made Native Templates to help you develop native ads quickly. We'd love to see you contribute to our GitHub repo to add new templates or features. Send us a pull request and we'll take a look.