【发布时间】:2013-02-22 08:10:09
【问题描述】:
我决定在我的应用中添加一个带有 AdMob 的 SMARTBANNER。 正如文档中所述: smart-banners sizes 在 Android 上,纵向,我保留了 50 dp 的高度。所以我只是为它保留了一个空的线性布局,它在过去的应用程序中对我有用:
<LinearLayout
android:id="@+id/layoutAd"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:orientation="vertical" />
然后用的方法:
private void createAdView() {
if (C.AD_ON) {
ad_view = new AdView(this, AdSize.SMART_BANNER, C.AD_APPLICATION_ID);
LinearLayout l = (LinearLayout) findViewById (R.id.layoutAd);
l.addView (ad_view);
AdRequest a = new AdRequest();
ad_view.loadAd(a);
}
}
现在,虽然这个简单的方法通常有效,但在这种情况下,我得到了一个错误:
Not enough space to show ad! Wants: <480, 90>, Has: <480, 50>
??? 480x90? 480x50?我在上表中找不到这些尺寸...它们来自哪里? 无论如何,广告没有显示。
然后我尝试保留 90dp 而不是 50dp,并且广告正确显示,留下一个空的空间……猜猜看……大约 40dp。
这时我想到了一个问题:以前,我以前的应用程序都可以在手机上运行。我认为一切都在适应不同的屏幕尺寸和密度。现在我很害怕我的许多广告实际上无法展示,因为广告预期的是 90dp 而不是 50dp 或其他任何数字。
实际上,我决定放置 SMARTBANNER 的唯一原因是我认为不会出现此类问题!
现在...我应该怎么做才能使它在每个可能的屏幕上都能正常工作,并合理地确保它不会在某些密度或某些尺寸上失败?我应该自己检测正在运行的设备,然后以编程方式保留 50、90 或 55 dp?这对我来说听起来很荒谬!
难道没有一些“WRAP_CONTENT”这样的功能适用于横幅,这样我就不必手动指定 90 或 50 像素,而只期望显示正确的横幅和适应的布局给它?
谢谢。
【问题讨论】:
-
这是一个奇怪的情况,上面的代码应该可以工作。你在什么设备上试过这个?
标签: android android-layout admob