我有布局结构:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.google.ads.AdView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
/>
<LinearLayout style="@style/TitleBar"
android:layout_width="fill_parent"
android:layout_height="45dip"
// title bar
</LinearLayout>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
// main layout with all needed elements and background!" >
</RelativeLayout>
</LinearLayout>
一切都很好,直到我的AdMob消失。然后,我可以看到具有admob大小的空黑区域。
更新:我的屏幕截图:
通常我会看到这里的广告拦截,但是当我获得onFailedToReceiveAd(广告请求成功,但由于缺少广告资源而没有广告返回。)广告消息,我的布局没有填满所有屏幕。
答案 0 :(得分:5)
你所描述的看起来很奇怪...... 我认为导致广告消失的原因是广告被刷新,然后由于AdMob方面缺少广告而没有投放广告。 但是,根据我自己的测试,一旦广告加载,如果后续广告刷新失败,之前的广告仍然显示,我还没有看到广告'消失'。
也许您可以查看logcat并查看是否有任何错误。
以下是我用于在自己的应用上测试广告请求投放/失败的一些代码。 如果在广告加载失败后出现空白,我想您可以在onFailedToReceiveAd中添加一些代码来调整AdView的大小
AdView av = (AdView)findViewById(R.id.adView);
// Set AdListener
av.setAdListener(new AdListener() {
AdView av = (AdView)findViewById(R.id.adView);
@Override
public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
System.err.println("Ad failed: " + ad.toString() + error.toString());
av.setVisibility(AdView.GONE);//By setting visibility to GONE, you hide the AdView, but the AdView won't refresh automaticaly anymore.
}
@Override
public void onReceiveAd(Ad ad) {
System.out.println("Ad received: " + ad.toString());
av.setVisibility(AdView.VISIBLE);
}
});
// Create an ad request.
AdRequest adRequest = new AdRequest();
// Start loading the ad in the background.
av.loadAd(adRequest);
答案 1 :(得分:2)
要确认您的adView是否将此作为高度参数?
android:layout_height="wrap_content"
答案 2 :(得分:2)
另一种看待此问题的方法是在AdMob中设置自己的“自家广告”以定位您的应用。然后,当AdMob没有要投放的广告时,它会显示您自己的广告以“填空”。
答案 3 :(得分:1)