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