androidadmobnative-ads

Can't get AdMob ad choices icon to show up on native ads


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).

enter image description here

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. enter image description here


Solution

  • 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.