代码之家  ›  专栏  ›  技术社区  ›  Beppi's

如何使用SMARTBANNER(AdMob)并确保展示

  •  2
  • Beppi's  · 技术社区  · 12 年前

    我决定在我的应用程序上安装一个带有AdMob的SMARTBANNER。 正如文件中所述: smart-banners sizes 在安卓系统上,人像,我保留了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>
    

    ??? 480×90英寸?480×50英寸?我在上一张表中找不到这些尺码。。。它们来自哪里? 无论如何,广告没有显示。

    然后我试着保留90dp而不是50dp,广告显示正确,留下了一个emtpy空间。。。你猜怎么着。。。约40dp。

    这时,我想到了一个问题:以前,使用我以前的应用程序,手机上的一切都可以工作。我认为一切都在适应不同的屏幕尺寸和密度。现在我很害怕,实际上我的许多广告都无法播放,因为广告预期的是90dp,而不是50dp,或者其他任何数字。

    事实上,我决定推出SMARTBANNER的唯一原因是我认为自己没有这种问题!

    现在我应该怎么做才能在每个可能的屏幕上正确工作,并合理地确保它不会在某种密度或某种尺寸上失败?我应该自己检测我在什么设备上运行,然后以编程方式保留50、90或55 dp吗?这听起来很荒谬!

    难道没有像“WRAP_CONTENT”这样的功能可以应用于横幅吗?这样我就不必手动指定90或50个像素,只需要期望显示正确的横幅和布局来适应它?

    非常感谢。

    2 回复  |  直到 12 年前
        1
  •  4
  •   Ljdawson    12 年前

    如果你想使用固定的高度(而不是使用推荐的WRAP_CONTENT),你必须为每个屏幕尺寸提供一个尺寸。我使用了以下维度,但请注意,如果smartbanner的实现发生变化,这些维度可能会发生变化。

    /values/dimens
    <dimen name="ad_min_height">50dp</dimen>
    
    /values-land/dimens
    <dimen name="ad_min_height">32dp</dimen>
    
    /values-large-land-v11/dimens
    <dimen name="ad_min_height">90dp</dimen>
    
    /values-large-v11/dimens
    <dimen name="ad_min_height">90dp</dimen>
    
        2
  •  3
  •   Eric Leichtenschlag    12 年前

    你真的试过了吗 WRAP_CONTENT 对于 layout_height 在智能横幅上?这就是解决方案和推荐做法。