0

当我注意到 Admob 广告(Admob SDK 6.1.0)显示在应用程序的按钮顶部时,我正在测试应用程序与 Jelly Bean 的兼容性。我使用的布局是:

        <ImageView android:id="@+id/line"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/spinner"
            android:maxWidth="350sp"
            android:layout_marginTop="5dip"
            android:layout_centerHorizontal="true"
            android:src="@drawable/line"/>
        <View android:id="@+id/ad" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:layout_below="@id/line"
            android:layout_marginTop="5dip"
            android:layout_marginBottom="5dip"/>
        <Button android:id="@+id/generate"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/ad"
            android:layout_centerHorizontal="true"
            android:textStyle="bold"
            android:textColor="#000000"
            android:text="@string/generate"/>

发生的情况是,当广告加载时,它会显示在按钮的顶部。在以前的 Android 版本(ICS 和更早版本)中,会加载广告并按下按钮以容纳广告。有谁知道如何在 Jelly Bean 上恢复此功能?谢谢!

4

1 回答 1

0

我对这个问题的解决方案是实现 AdListener 接口,以便在加载广告时手动设置按钮的上边距。这会将按钮向下移动并防止它被广告覆盖。

@Override
public void onReceiveAd(Ad arg0) {      
    // Move the generate button down by the height of the ad on load
    MarginLayoutParams params = (MarginLayoutParams)generateBtn.getLayoutParams();
    params.topMargin = AdSize.BANNER.getHeightInPixels(this);
    generateBtn.setLayoutParams(params);
}

并且由于这个问题只发生在 Jelly Bean 上,如果在 Jelly Bean 上运行,只设置 AdListener

if(Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN)
    ad.setAdListener(this);
于 2012-09-03T20:24:57.130 回答