我决定在我的应用中添加一个带有 AdMob 的 SMARTBANNER。正如文档中所述: 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 像素,而只期望显示正确的横幅和适应它的布局?
谢谢你。