没有足够的空间来展示带有layout-hdpi的广告

时间:2014-02-28 12:43:53

标签: android android-layout layout hdpi

我为三星S3 Mini和谷歌Nexus S等设备创建了一个附加纵向布局 - 纵向为480像素宽。

要添加此克隆布局,我使用Android Studio 创建其他... 然后选择密度并选择高密度为我提供使用新文件夹res/layout-hdpi内的布局副本 - 当我使用为480 x 800屏幕尺寸创建的AVD时,布局在模拟器中工作得很好(事物出现并且是您期望它们的位置)。

但是,我的AdMob广告在其他版面中效果很好 - 例如layout-sw360dp-portlayout-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尺寸的广告(我认为应该很容易适应可用空间)说它无法在三星S3 Mini或Google Nexus S等设备上显示。我是必须删除RelativeLayout具有的填充?这是个好主意吗?

1 个答案:

答案 0 :(得分:2)

我最终设法通过创建一个包含2 LinearLayout个项目的顶级RelativeLayout来实现此目的。对于UI组件,一个RelativeLayout可以保持其填充,如Android设计指南(以及看起来不错)所建议的那样。另一个RelativeLayout没有填充,所以广告适合内部(它之前抱怨它需要480像素的屏幕空间)。

用户界面RelativeLayoutandroid:layout_weight="1",广告RelativeLayoutandroid:layout_weight="7.2" - 这似乎适用于屏幕为480 x 800(hdpi)的设备。< / p>

对我来说,感觉有点像黑客,但它确实有效。