2016-11-11 5 views
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. Есть ли способ сделать это? Отобразите добавление с использованием FULL_WIDTH и некоторого запаса на CardView. Я также попытался помещать дополнение и маржу на родительский LinearLayout вместо margin на CardView с той же проблемой.NativeExpressAdView в CardView

ответ

1

Константа FULL_WIDTH указывает, что объявление должно занимать всю ширину экрана устройства. В вашем случае нет места для объявления, поскольку некоторые из его предков вводят дополнительное горизонтальное дополнение. Для достижения своей цели вы можете определить, какая ширина должна быть во время выполнения. Все, что вам нужно сделать, это рассчитать ширину устройства и вычесть правильное количество отступов. Например:

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

Важно отметить, что здесь значения угла падения (не зависящие от плотности пикселей), а не пикселей.

Смежные вопросы