战斗了一段时间之后,我不知道自己在做什么错。最后,我从他们的示例中大致制作了一个示例项目,但仍然看不到广告选择图标。
这是显示广告的代码:
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的情况)。
修改:测试广告单元是否可能不显示该图标?
答案 0 :(得分:1)
这是我的广告代码。您可以在广告视图中使用所有功能。
<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>
让我知道这是否对您有帮助。
答案 1 :(得分:0)
它对我有用(AdmobNativeItem是我的自定义类):
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);
}