无法让 AdMob 广告选择图标显示在原生广告上

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

与此斗争了一段时间,我不知道我做错了什么。最后,我几乎根据他们的示例制作了一个示例项目,但仍然看不到广告选择图标。

这是显示广告的代码:

 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());

这是我的测试本机布局:

<?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>

我将其添加到如下所示的 LinearLayout 中:

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

这就是它最终的样子(我知道它说的是 mopub 测试,因为这是针对 mopub 的,但在无法让它显示那里的图标后,我继续尝试没有 mopub) .

编辑:测试广告单元是否可能不显示该图标?

编辑:以防万一不清楚,我说的是通常出现在右上角的图标,上面提到它是广告。这是一个例子。

这是我的广告代码。您可以在广告视图中使用所有可能性。

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

我认为你想要使用的是 <TextView style="@style/AppTheme.AdAttribution"/>

这是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>

如果这对你有帮助,请告诉我。

它对我有用(AdmobNativeItem 是我的习惯 class):

AdLoader adLoader = new AdLoader.Builder(context, unitID)
                .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {
                    @Override
                    public void onUnifiedNativeAdLoaded(UnifiedNativeAd unifiedNativeAd) {

                        UnifiedNativeAdView adView = (UnifiedNativeAdView) LayoutInflater
                                .from(activity)
                                .inflate(R.layout.admob_content_native_ad, null, false);

                        AdmobNativeItem nativeItem = new AdmobNativeItem(unifiedNativeAd, adView);
                    }
                })
                .withNativeAdOptions(new NativeAdOptions.Builder()
                        .setRequestCustomMuteThisAd(true)
                        .setAdChoicesPlacement(ADCHOICES_BOTTOM_LEFT)
                        .build())
                .build();

        adLoader.loadAd(new AdRequest.Builder().build());

有关 ADCHOICES_BOTTOM_LEFT 的文档请参阅 setAdChoicesPlacement()

在 AdmobNativeItem 中:

if (unifiedNativeAd.getAdChoicesInfo() != null){
    AdChoicesView choicesView = new AdChoicesView(unifiedNativeAdView.getContext());
    unifiedNativeAdView.setAdChoicesView(choicesView);
}