Android Can';无法让AdMob广告选择图标显示在本机广告上

Android Can';无法让AdMob广告选择图标显示在本机广告上,android,admob,google-admob,native-ads,Android,Admob,Google Admob,Native Ads,我已经为此奋斗了一段时间,我不知道我做错了什么。最后,我根据他们的示例制作了一个示例项目,但仍然看不到广告选择图标 这是显示广告的代码: AdLoader adLoader = new AdLoader.Builder(this, "ca-app-pub-3940256099942544/2247696110") .forUnifiedNativeAd(new UnifiedNativeAd.OnUnifiedNativeAdLoadedListener() {

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

这是显示广告的代码:

 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>

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


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

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

<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>
如果这对您有帮助,请告诉我。

它对我有效(AdmobNativeItem是我的自定义类):

有关的文档请参阅setAdChoicesPlacement()

在AdmobNativeItem中:

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

对不起,你说的“广告选择图标”是什么意思?右上角的图标(通常)表示这是一个广告。有些人称之为隐私信息图标,其他广告选择,我添加了一个例子。我将发布我正在使用的布局。谢谢,我可以看到你的广告选择图标,很奇怪,经过零修改,现在我在我的代码中也看到了它,至少在那个示例代码中是这样。我将不得不再次测试我的实际代码,看看它现在是否显示。在零更改的情况下,我自己的应用程序现在再次显示它。我想知道他们修复的测试广告单元是否有bug,因为我昨天刚刚测试了它,但它不起作用。我将它标记为已接受,并给你分数,因为它是唯一的答案和唯一的示例,但我认为我的代码一开始就没有问题,因为它在零修改的情况下开始工作。AdChoice和广告归因是两件不同的事情。
<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>
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());
if (unifiedNativeAd.getAdChoicesInfo() != null){
    AdChoicesView choicesView = new AdChoicesView(unifiedNativeAdView.getContext());
    unifiedNativeAdView.setAdChoicesView(choicesView);
}