2
<LinearLayout
    orientation="vertical">
...
   <android.support.v7.widget.CardView
        android:id="@+id/card_pitch"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        card_view:cardCornerRadius="0dp">

        <com.google.android.gms.ads.NativeExpressAdView
            android:id="@+id/adview_small_light"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:visibility="gone"
            ads:adSize="FULL_WIDTHx100"
            ads:adUnitId="xxx">
        </com.google.android.gms.ads.NativeExpressAdView>

    </android.support.v7.widget.CardView>
1-11 16:21:22.211 28899-28899/? W/Ads: Not enough space to show ad. Needs 411x100 dp, but only has 379x385 dp.
11-11 16:21:22.211 28899-28899/? W/Ads: Not enough space to show ad. Needs 411x100 dp, but only has 379x100 dp.
11-11 16:21:22.211 28899-28899/? W/Ads: Not enough space to show ad. Needs 411x100 dp, but only has 379x173 dp.
11-11 16:21:22.211 28899-28899/? W/Ads: Not enough space to show ad. Needs 411x100 dp, but only has 379x100 dp.

广告不显示,CardView 上的边距 FULL_WIDTH 有问题。有没有办法做到这一点?在 CardView 上显示使用 FULL_WIDTH 和一些边距的添加。我还尝试在父 LinearLayout 上放置填充和边距,而不是在 CardView 上放置边距,但存在同样的问题。

4

1 回答 1

2

FULL_WIDTH常量指定广告应占据设备屏幕的整个宽度。在您的情况下,广告没有足够的空间,因为它的一些祖先引入了额外的水平填充。为了实现您的目标,您可以确定运行时的宽度。您需要做的就是计算设备的宽度并减去正确的填充量。例如:

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
width = displayMetrics.widthPixels / displayMetrics.density;
adView.setAdSize(new AdSize(width - padding, 100));

重要的是要注意这里的值是倾角(与密度无关的像素)而不是像素。

于 2016-11-11T22:41:08.263 回答