我不知道为什么会这样,这让我很生气。简而言之,在我通过MoPub使用的所有广告网络中,AdMob似乎是唯一一个不显示广告的广告,声称它没有足够的空间。在MoPub中,我有一个电话广告单元和一个平板电脑广告单元。这是具体的日志:
02-10 09:44:44.094: I/Ads(9363): Request scenario: Online server request.
02-10 09:44:50.114: D/webviewglue(9363): nativeDestroy view: 0x678b8418
02-10 09:44:50.124: I/Ads(9363): onReceiveAd()
02-10 09:44:50.124: D/MoPub(9363): Google AdMob load succeeded. Showing ad...
02-10 09:44:50.124: D/MoPub(9363): adLoaded
02-10 09:44:50.124: D/MoPub(9363): Tracking impression for native adapter.
02-10 09:44:50.144: W/Ads(9363): Not enough space to show ad! Wants: <969, 119>, Has: <800, 1073741823>
02-10 09:44:50.144: W/Ads(9363): Not enough space to show ad! Wants: <969, 119>, Has: <800, 1073741823>
广告已加载但未显示,因为显然它需要更多空间。我只想展示横幅广告。我正在测试Nexus 7。
我使用的其他网络是LeadBolt和Millennial。他们在同一个空间内展示横幅广告。
我的java代码,用于选择要显示的广告单元(基于屏幕尺寸的手机或平板电脑):
//Advert if statement
Configuration config = getResources().getConfiguration();
if ((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
//Tablet
mAdViewTabletLarge = (MoPubView) findViewById(R.id.LargeAdvert);
mAdViewTabletLarge.setAdUnitId("id here");
mAdViewTabletLarge.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
mAdViewTabletLarge.loadAd();
}
else if ((config.screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_XLARGE) {
//Tablet
mAdViewTabletXLarge = (MoPubView) findViewById(R.id.LargeAdvert);
mAdViewTabletXLarge.setAdUnitId("id here");
mAdViewTabletXLarge.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
mAdViewTabletXLarge.loadAd();
}
else {
//Phone
mAdViewPhone = (MoPubView) findViewById(R.id.LargeAdvert);
mAdViewPhone.setAdUnitId("id here");
mAdViewPhone.setVisibility(Application.getAdVisibiltyForEdition(this.getApplicationContext()));
mAdViewPhone.loadAd();
}
任何人都知道发生了什么事吗?
答案 0 :(得分:3)
我在Nexus 7上遇到了同样的问题。我目前正在使用Eclipse Juno,Service Release 1.在这个版本中有@dimension / ... 引用自动添加到xml布局文件中。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
...
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
...
...
当我删除@dimension / ...引用时,错误消失,广告显示。不确定是否存在覆盖错误的技巧,并允许广告在@dimension / ...参数中显示。如果有人知道,请分享!
答案 1 :(得分:1)
您收到错误是因为在肖像模式下,Nexus 7上的728x90 dp广告太大,宽度仅为600 dp。我无法想象其他网络如何使728x90图像适合600x90,除非他们缩小高度以保持纵横比。 AdMob不会对此类广告进行扩展,而是会抛出此警告。
听起来像Mopub限制,平板电脑广告只能是一个尺寸。我不熟悉Mopub前端设置,但也许您可以为7英寸平板电脑创建一个尺寸较小的第二个广告,并在运行时检查您的屏幕宽度以确定要显示的广告。
答案 2 :(得分:1)
您应该在MoPub中创建一个320x50广告单元和一个728x90广告单元,检测设备的宽度,然后根据设备的宽度有条件地触发它们。
如果屏幕宽度小于728像素,请点亮320x50广告单元。
如果更高,请使用排行榜广告单元。
答案 3 :(得分:1)
此错误的原因:
您尝试展示广告的视图将从父视图中删除。 确定
<LinearLayout
android:id="@+id/layoutAdmobGame"
android:layout_width="wrap_content"
android:layout_height="52dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:background="@android:color/transparent"
android:gravity="center_horizontal"
android:orientation="vertical" >
</LinearLayout>
这在其父视图中并未被删除