我已经实现了 admob |将 Google Mobile AdSDK 加入到我使用 andengine 构建的安卓游戏中。广告正在加载到游戏中,但在打开应用程序后第一次显示不正确。但是当我退出应用程序 Activity 时,通过单击添加或转到谷歌播放排行榜并返回应用程序然后它开始正确显示它。 所以基本上当我打开应用程序时,广告是全宽的,但几乎是半高的。如果点击广告,转到广告链接并通过按后退按钮返回到我的应用程序,广告带有全宽全高。坚持了 3 天:/
public static AdView adView;
@Override
protected void onSetContentView() {
final FrameLayout frameLayout = new FrameLayout(this);
final FrameLayout.LayoutParams frameLayoutLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
adView = new AdView(this);
new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId("MY AD UNIT ID");
final FrameLayout.LayoutParams adViewLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.CENTER_HORIZONTAL);
this.mRenderSurfaceView = new RenderSurfaceView(this);
mRenderSurfaceView.setRenderer(this.mEngine, this);
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("MY EMULATOR ID")
.addTestDevice("MY DEVICE ID")
.build();
final FrameLayout.LayoutParams surfaceViewLayoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
frameLayout.addView(this.mRenderSurfaceView,surfaceViewLayoutParams);
frameLayout.addView(adView,adViewLayoutParams);
this.setContentView(frameLayout, frameLayoutLayoutParams);
adView.loadAd(adRequest);
Log.d("Ads","AdView banner size is "+adView.getWidth()+" and "+adView.getHeight());
//Creating the banner view.
}
还有我输入代码以查看广告 View 大小的日志。它总是在应用程序启动时打印这个
AdView banner size is 0 and 0
最佳答案
仅在完成加载后尝试将 adView
添加到 frameLayout
:
adView.setAdListener(new AdListener() {
public void onAdLoaded(){
frameLayout.addView(adView, adViewLayoutParams);
}
});
如果您的广告正在刷新,您可能需要在添加之前先检查 adView
是否已添加到 frameLayout
,否则它会崩溃。
关于android - Admob 横幅广告显示高度在使用 andengine 制作的安卓游戏中不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249085/