Been fighting this for a while and I have no idea what I'm doing wrong. Finally I made a sample project pretty much from their example and still can't see the ad choices icon.
This is the code to show the ad:
AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110")
.forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
@Override
public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {
// Assumes you have a placeholder FrameLayout in your View layout
// (with id fl_adplaceholder) where the ad is to be placed.
// FrameLayout frameLayout =
// findViewById(R.id.fl_adplaceholder);
// Assumes that your ad layout is in a file call ad_unified.xml
// in the res/layout folder
UnifiedNativeAdView adView = (UnifiedNativeAdView) getLayoutInflater()
.inflate(R.layout.native_ad_layout_generic_lineartest_unified, null);
// This method sets the text, images and the native ad, etc into the ad
// view.
TextView title = adView.findViewById(R.id.native_ad_title);
title.setText(unifiedNativeAd.getHeadline());
adView.setHeadlineView(title);
TextView text = adView.findViewById(R.id.native_ad_text);
text.setText(unifiedNativeAd.getBody());
adView.setBodyView(text);
ImageView image = adView.findViewById(R.id.native_ad_icon_image);
image.setImageDrawable(unifiedNativeAd.getIcon().getDrawable());
adView.setIconView(image);
Button button = adView.findViewById(R.id.native_call_to_action);
button.setText(unifiedNativeAd.getCallToAction());
adView.setCallToActionView(button);
adView.setNativeAd(unifiedNativeAd);
main.addView(adView);
}
})
.withAdListener(new AdListener() {
@Override
public void onAdFailedToLoad(int errorCode) {
Log.w(TAG, "" + errorCode);
}
})
.withNativeAdOptions(new NativeAdOptions.Builder()
// Methods in the NativeAdOptions.Builder class can be
// used here to specify individual options settings.
.build())
.build();
adLoader.loadAd(new AdRequest.Builder().build());
This is my test native layout:
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.gms.ads.formats.UnifiedNativeAdView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryDark">
<LinearLayout
android:id="@+id/relativeLayout"
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="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/colorPrimary"
android:gravity="center"
android:minWidth="300dp"
android:padding="8dp">
<!--<ImageView
android:id="@+id/native_ad_main_image"
android:layout_width="@dimen/banner_height_large"
android:layout_height="@dimen/banner_height_large"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
/>-->
<android.support.v7.widget.AppCompatImageView
android:id="@+id/native_ad_icon_image"
android:layout_width="64dp"
android:layout_height="64dp"
android:background="@null"
android:scaleType="fitXY"
/>
<TextView
android:id="@+id/native_ad_title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="8dp"
android:layout_marginRight="4dp"
android:alpha="0.87"
android:ellipsize="end"
android:maxLines="1"
android:textColor="@color/white"
android:textSize="12sp"
/>
<TextView
android:id="@+id/native_ad_text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
android:alpha="0.54"
android:ellipsize="end"
android:maxLines="4"
android:textColor="@color/white"
android:textSize="10sp"
/>
<Button
android:id="@+id/native_call_to_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/colorAccent"
android:textSize="10sp"
/>
</LinearLayout>
</com.google.android.gms.ads.formats.UnifiedNativeAdView>
I'm adding it into a LinearLayout that looks like this:
<LinearLayout
android:id="@+id/main_view"
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"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".MainActivity"
tools:showIn="@layout/activity_main"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
/>
</LinearLayout>
And this is what it ends up looking like (I know it says mopub test that is because this was for mopub but after not being able to get it to show the icon there I went ahead and tried it without mopub).
Edit: Does the test ad unit maybe not show that icon?
Edit: Just in case it isn't clear, I am talking about the icon that usually shows up on the top right that mentions it is an ad. This is an example.
Here it is my code for ads. There are all posibilities you could use in an adview.
<com.google.android.gms.ads.formats.UnifiedNativeAdView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/adview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:background="#FFFFFF"
android:minHeight="50dp"
android:orientation="vertical">
<TextView style="@style/AppTheme.AdAttribution"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="3dp">
<ImageView
android:id="@+id/ad_image"
android:layout_width="match_parent"
android:layout_height="270dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="5dp"
android:scaleType="centerCrop"/>
<com.google.android.gms.ads.formats.MediaView
android:id="@+id/ad_media"
android:layout_gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="270dp"
android:layout_marginTop="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/ad_app_icon"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginLeft="-8dp"
android:paddingTop="16dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/ad_headline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Title02Bold"
android:paddingTop="16dp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/ad_advertiser"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="bottom"
style="@style/Title02Bold"/>
<RatingBar
android:id="@+id/ad_stars"
android:visibility="invisible"
style="?android:attr/ratingBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:isIndicator="true"
android:numStars="5"
android:stepSize="0.5" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="40dp">
<TextView
android:id="@+id/ad_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:layout_marginEnd="20dp"
style="@style/Title03Neutral"
android:paddingTop="8dp"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"
android:layout_gravity="end"
android:orientation="horizontal"
android:paddingBottom="10dp"
android:paddingTop="10dp">
<TextView
android:id="@+id/ad_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingStart="5dp"
android:paddingRight="5dp"
android:paddingEnd="5dp"
android:textSize="12sp" />
<TextView
android:id="@+id/ad_store"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:paddingStart="5dp"
android:paddingRight="5dp"
android:paddingEnd="5dp"
android:textSize="12sp" />
<Button
android:id="@+id/ad_call_to_action"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</com.google.android.gms.ads.formats.UnifiedNativeAdView>
I think that the one you want to use is the <TextView style="@style/AppTheme.AdAttribution"/>
Here it is the Style
:
<style name="AppTheme.AdAttribution">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_gravity">left</item>
<item name="android:textColor">#FFFFFF</item>
<item name="android:textSize">12sp</item>
<item name="android:text">@string/ad_attribution</item>
<item name="android:background">#FFCC66</item>
<item name="android:width">15dp</item>
<item name="android:height">15dp</item>
</style>
<string name="ad_attribution">Ad</string>
Let me know if this helps you.