【问题标题】:android admob size on dimensions error: A 'type' attribute is required for <item>尺寸错误的 android admob 大小:<item> 需要“类型”属性
【发布时间】:2015-04-04 08:17:28
【问题描述】:

我有一个布局和属性:

广告:adSize="LARGE_BANNER"

我想把它放在 广告:adSize="@dim...暗名称"

但它给了我错误 例如:FULL_BANNER 它说不存在完整横幅之类的内容,并且无法编译。

我现在在样式上尝试了它,但它也不起作用:

<item name="ads:adSize">LEADERBOARD</item>

它说错误:

需要'type'属性

有什么想法吗?

【问题讨论】:

  • 您可以通过编程方式实现此目的,也可以使用 res 文件夹中的值通过 xml 使用。看我的回答。顺便说一句,您应该通过 google play services 库使用 admob。您将可以使用 adView#setAdSize(size) 等方法,这会使事情变得更容易

标签: android styles size admob dimensions


【解决方案1】:

您可以通过编程方式根据屏幕分辨率动态加载广告尺寸。

在你的活动类 onCreate():

        AdSize adSize = AdSize.SMART_BANNER;

        DisplayMetrics dm = getResources().getDisplayMetrics();

        double density = dm.density * 160;
        double x = Math.pow(dm.widthPixels / density, 2);
        double y = Math.pow(dm.heightPixels / density, 2);
        double screenInches = Math.sqrt(x + y);

        if (screenInches > 8) { // > 728 X 90
            adSize = AdSize.IAB_LEADERBOARD;
        } else if (screenInches > 6) { // > 468 X 60
            adSize = AdSize.IAB_BANNER;
        } else { // > 320 X 50
            adSize = AdSize.BANNER;
        }

        LinearLayout adContainer = (LinearLayout) findViewById(R.id.your_parent_layout);
        adView = new AdView(this, adsize, "xxxxxxxxxx");
        AdRequest adRequest = new AdRequest();
        adView.loadAd(adRequest);

        // Place the ad view.
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
        adContainer.addView(adView, params);

如果您更喜欢以 xml 格式定义广告视图并引用 values-sw600, values-sw720.. 文件夹中的值,您可以在 dimens.xml 中定义宽度和高度:

在 values/dimens.xml 中

  <resources>
        <!-- Default screen margins, per the Android Design guidelines. -->
        <dimen name="admob_width">320dp</dimen>
        <dimen name="admob_height">50dp</dimen>
    </resources>

然后,在您的布局中:

<com.google.ads.AdView 
    android:id="@+id/adView"
    android:layout_width="@dimen/admob_width"
    android:layout_height="@dimen/admob_height"
    ads:adUnitId="your_unit_id"
    ads:adSize="SMART_BANNER"
    ads:loadAdOnCreate="true"/>

【讨论】:

  • 感谢您的回答,即使这不是预期的结果,因为 admob 会根据 xml 上选择的尺寸向您发送不同类型的广告,如果我有尺寸横幅和尺寸排行榜,它们会变得不同广告所以更好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多