我为三星S3 Mini和谷歌Nexus S等设备创建了一个附加纵向布局 - 纵向为480像素宽。
要添加此克隆布局,我使用Android Studio 创建其他... 然后选择密度并选择高密度为我提供使用新文件夹res/layout-hdpi
内的布局副本 - 当我使用为480 x 800屏幕尺寸创建的AVD时,布局在模拟器中工作得很好(事物出现并且是您期望它们的位置)。
但是,我的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
尺寸的广告(我认为应该很容易适应可用空间)说它无法在三星S3 Mini或Google Nexus S等设备上显示。我是必须删除RelativeLayout
具有的填充?这是个好主意吗?
答案 0 :(得分:2)
我最终设法通过创建一个包含2 LinearLayout
个项目的顶级RelativeLayout
来实现此目的。对于UI组件,一个RelativeLayout
可以保持其填充,如Android设计指南(以及看起来不错)所建议的那样。另一个RelativeLayout
没有填充,所以广告适合内部(它之前抱怨它需要480像素的屏幕空间)。
用户界面RelativeLayout
有android:layout_weight="1"
,广告RelativeLayout
有android:layout_weight="7.2"
- 这似乎适用于屏幕为480 x 800(hdpi)的设备。< / p>
对我来说,感觉有点像黑客,但它确实有效。