#android #smartbanner
#Android #smartbanner
Вопрос:
Я хочу добавить SMART_BANNER в нижней части моего приложения для Android (HTML5), макет определяется следующим образом
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@ id/mainLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="0dp" android:paddingRight="0dp" android:background="@color/default_header" > <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@ id/adView" android:background="@color/add_background" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="0dp" android:paddingRight="0dp" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="SMART_BANNER" ads:adUnitId="@string/ad_banner"> </com.google.android.gms.ads.AdView> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@ id/adView" android:background="@color/start_background" android:id="@ id/webView" />
Он отлично работает с «БАННЕРОМ», но в случае «SMART_BANNER» всегда с всегда на один пиксель меньше, и отображается следующая ошибка:
Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 411×750 точек на дюйм. Без рекламы: недостаточно места для показа рекламы. Требуется 412×90 точек на дюйм, но имеет только 411×750 точек на дюйм.
Вопрос: Где я потерял один dp (с 412 по 411)?
Добавить информацию: я использую эмулятор (из Android Studio). Проблема с использованием возникает, если я использую «Pixel 2XL API 26» (СМАРТ-баннер не показан), но баннер отображается правильно, если я использую «Pixel API 28»
С наилучшими пожеланиями, Андреас
Комментарии:
1. У меня все еще есть проблема. Но, похоже, это зависит от конкретного устройства (в настоящее время я использую эмулятор). Проблема возникает с Pixel 2XL (здесь отображается только баннер (без смарт-баннера)), но отлично работает с ‘Pixel’. К сожалению, у меня нет Pixel 2XL. Может ли проблема быть вызвана эмулятором?
Ответ №1:
Вам нужно установить ширину wrap_content
объявления вместо match_parent
. По крайней мере, это то, что я делаю со своими советами, и это всегда работает, независимо от того, БАННЕР это или SMART_BANNER.
[Не по теме] Я также заметил, что в вашем WebView вы написали android:layout_above="@ id/adView"
. В этом случае вам не нужно объявлять новую ссылку на AdView, поскольку она уже была объявлена ранее. Так что, если вы просто поместите @id/adView
вместо @ id
него, он все равно будет работать.
Также попробуйте удалить эти отступы (даже если для них установлено значение 0) как из вашего макета, так и из AdView. Насколько я вижу, в них нет необходимости.
Комментарии:
1. У меня все еще есть проблема. Но, похоже, это зависит от конкретного устройства (в настоящее время я использую эмулятор). Проблема возникает с Pixel 2XL (здесь отображается только баннер (без смарт-баннера)), но отлично работает с ‘Pixel’. К сожалению, у меня нет Pixel 2XL. Может ли проблема быть вызвана эмулятором?
2. Да, я могу гарантировать вам 99%, что это как-то связано с эмулятором, потому что поведение AdView, как правило, одно с эмуляторами, а другое с реальными устройствами. Вы можете заметить это изменение поведения, запустив приложение на эмуляторе, в AdView всегда будет отображаться «Тестовое объявление», даже если вы используете реальный идентификатор рекламного блока
Ответ №2:
вы должны установить ширину и высоту следующим образом :
<com.google.android.gms.ads.AdView
android:id="@ id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
ads:adSize="BANNER"
ads:adUnitId="@string/admob_unitid_web">