Как сделать AdView "занимающим" пространство даже при запросе объявления? (Android)

Я использую Google AdMob Ads SDK 4.0.4 для Android

По умолчанию AdView будет иметь размер до загрузки объявления. Это может вызвать проблемы, если у вас есть кнопки выше или ниже объявления.

Пользователь может случайно нажать на объявление, если объявление вернется в тот момент, когда они собираются нажать кнопку.

В старой версии admob SDK я решил это с помощью setGoneWithoutAd (false). Таким образом, пространство будет сохранено, даже если объявление еще не возвращено.

В новом SDK (Google Admob Ads SDK 4.0.4) мне удается сделать то же самое используя это быстрое исправление: зарезервируйте место, разместив рекламу в макете, которая имеет ширину = "320dp" и height = "50dp"

<LinearLayout 
                        android:layout_width="320dp" 
                        android:layout_height="50dp" > 
                  <com.google.ads.AdView android:id="@+id/adview" 
                         android:layout_width="wrap_content" 
                         android:layout_height="wrap_content" 
                         ads:adUnitId="xxxxxxxxxxx" 
                         ads:adSize="BANNER"/> 
</LinearLayout> 

Это работает, но я не уверен, что это правильный метод. (Я забегу на знаменитую тему "Недостаточно места для показа рекламы!"?)

Подведем итог вопроса: как (правильно) сделать AdView "занимающим" пространство даже при запросе объявления?

Заранее благодарю!

Ответ 1

Вы пробовали:

 <com.google.ads.AdView android:id="@+id/adview" 
                     android:layout_width="320dip" 
                     android:layout_height="50dip" 
                     ads:adUnitId="xxxxxxxxxxx" 
                     ads:adSize="BANNER"/> 

Я использую AdWhirl для показа своих объявлений для меня, и так, как у меня есть, с фиксированным видом, похожим на это с фиксированными размерами. Похоже, у вас есть возможность обернуть контент, чтобы вид исчез, когда ничего нет. Попробуйте и дайте мне знать, как это работает.

Ответ 2

Сначала вам нужно определить размер объявления, который вы хотите. Есть пара предопределенных.

Проще всего работать с SMART_BANNER, он будет адаптировать его ширину в соответствии с текущей шириной экрана, и высота будет равна 32, 50 или 90 дп для высоты экрана <= 400, ( > 400 & <= 720) или > 720 дp соответственно.

Как только вы узнаете тип баннера, который вы запросите, вы объявите его в свойстве adSize и зарезервируете место для этого, используя layout_width и layout_height свойства.

Например, для SMART_BANNER вы можете сделать что-то вроде этого:

<com.google.android.gms.ads.AdView
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="@dimen/ad_banner_height"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="xxxxxxxxx"/>

И вы установите для параметра ad_banner_height следующие значения:

values/dimens/ad_banner_height --> 32dp
values-h400dp/dimens/ad_banner_height --> 50dp
values-h720dp/dimens/ad_banner_height --> 90dp

Для других размеров баннеров проверьте: https://firebase.google.com/docs/admob/android/banner#banner_size