Я создал дополнительный портретный макет для таких устройств, как Samsung S3 Mini и Google Nexus S, ширина которых составляет 480 пикселей в портретной ориентации.
Чтобы добавить этот клонированный макет, я использовал Android Studio для Создать другое..., затем выбрал Плотность и выбрал Высокая плотность, чтобы предоставить мне копию макета внутри новой папки res/layout-hdpi
- макет в основном отлично работает в эмуляторе, когда я использую AVD, созданный для размера экрана 480 x 800 (вещи появляются и находятся там, где вы ожидаете).
Однако моя реклама AdMob отлично работает в других макетах, например. layout-sw360dp-port
и layout-sw600dp-port
- не отображаются. LogCat указывает Not enough space to show ad. Needs 480x75, but only has 432x570
.
Это частично имеет смысл для меня — поскольку RelativeLayout
, в котором находится com.google.android.gms.ads.AdView
, имеет как android:paddingLeft="@dimen/activity_horizontal_margin"
, так и android:paddingRight="@dimen/activity_horizontal_margin"
, установленные в соответствии с рекомендациями по дизайну Android, которые должны быть около 24 пикселей каждый.
Таким образом, имеет смысл, что доступное горизонтальное пространство составляет не 480 (ширина устройства), а скорее 432 (ширина RelativeLayout
после заполнения).
Однако почему объявление считает, что ему нужно все это горизонтальное пространство?
XML для объявления выглядит следующим образом:
<com.google.android.gms.ads.AdView
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
ads:adUnitId="@string/adUNITID"
ads:adSize="BANNER"
android:id="@+id/adView"
android:layout_alignParentStart="false"
android:layout_alignParentEnd="false"
android:layout_alignParentBottom="true" />
Документация подразумевает, что для объявления типа BANNER
должно требоваться «320x50 пикселей, не зависящих от плотности», я не понимаю, почему в LogCat говорится, что 480 требуется.
Поскольку объявление с BANNER
не показывалось, я попробовал SMART_BANNER
(который представляет собой «баннер динамического размера во всю ширину»), и это тоже не удалось показать (с тем же сообщением в LogCat).
Я пропустил что-то довольно очевидное здесь? Я не понимаю, почему обычное объявление размером BANNER
(которое, как мне кажется, должно легко вписаться в доступное место) говорит, что оно не может отображаться на таких устройствах, как Samsung S3 Mini или Google Nexus S. Должен ли я удалить это? прокладка, которая есть у RelativeLayout
? Это хорошая идея?
layout-hdpi
. - person Hippogriff   schedule 28.02.2014