0

我为三星 S3 Mini 和 Google Nexus S 等设备创建了一个额外的纵向布局——纵向宽度为 480 像素。

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

但是,我的 AdMob 广告在其他布局中运行良好 - 例如layout-sw360dp-portlayout-sw600dp-port-显示。LogCat 状态Not enough space to show ad. Needs 480x75, but only has 432x570

这对我来说部分是有意义的——因为根据 Android 设计指南,RelativeLayout它的com.google.android.gms.ads.AdView所在位置必须同时设置android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"设置——每个必须大约 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有?这是一个好主意吗?

4

1 回答 1

2

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

UIRelativeLayout有一个android:layout_weight="1",广告RelativeLayout有一个android:layout_weight="7.2"- 这似乎适用于屏幕为 480 x 800 (hdpi) 的设备。

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

于 2014-02-28T15:07:30.807 回答