7

我已经在清单上声明了 adMob

<activity 
           android:name="com.google.ads.AdActivity"
          android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
          />

它在设备轮换时已正确调整大小,但现在我必须添加android:configChanges="keyboardHidden|orientation"到包含 adMob 的活动中,以防止重新加载活动。我达到了它,但现在 adMob 在横向时没有缩放。onConfigChanges 事件我现在可以强制使用适当的横向尺寸调整 adMob 的大小。如何?谢谢你。

@Override
    public void onConfigurationChanged(Configuration newConfig) {
      super.onConfigurationChanged(newConfig);
    }
4

3 回答 3

11

我遇到了同样的问题,但找到了解决方法。

我的 AdView 位于页面底部,在相对布局内。加载时它看起来是正确的,所以我认为LayoutParams是正确的。要解决这个问题,我必须从 . 中删除所有内容RelativeLayout,创建一个新的 AdView,然后以正确的顺序将其全部添加回原来的LayoutParams.

就像是:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    AdView adView = (AdView)findViewById(R.id.adView);
    View contentFrame = findViewById(R.id.contentFrameLayout);

    RelativeLayout parent = (RelativeLayout) adView.getParent();
    LayoutParams mapFrameParams = contentFrame.getLayoutParams();
    LayoutParams adViewParams = adView.getLayoutParams();

    parent.removeView(adView);
    parent.removeView(contentFrame);

    AdView newAdView = new AdView(this, AdSize.SMART_BANNER, getString(R.string.admob_pubId));

    newAdView.setId(R.id.adView);

    parent.addView(newAdView, adViewParams);
    parent.addView(contentFrame,mapFrameParams);
    newAdView.loadAd(new AdRequest());
}

这对我有用,但仍然感觉像一个黑客。

于 2013-01-03T02:24:46.723 回答
4

没有足够的代表直接回复,但你是正确的贾斯汀史密斯。正如 Eric Leichtenschlag 在这里所说的那样https://groups.google.com/forum/#!msg/google-admob-ads-sdk/8Ch7VmAm7RE/34Tdw6Zz4jAJ如果您使用的是 SMART_BANNER,则需要重新创建 AdView

我所做的是从布局中删除 adView,销毁 adview,重新创建它,将其添加回布局中,然后发出 AdRequest。

于 2013-02-04T17:46:15.913 回答
2

试试这个设置:

<com.google.ads.AdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    ads:adSize="SMART_BANNER"
    ads:adUnitId="@string/adkey"
    ads:loadAdOnCreate="false"
    android:focusable="false" />

自动为您的SMART_BANNER广告选择最佳尺寸和类型。

在您的onConfigurationChanged方法中,您只需为AdView.

请注意,您可能需要添加xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads".

于 2012-07-01T11:35:30.910 回答