2011-11-17 46 views
1

长版本:我有一个Android游戏。在每个“屏幕”中我都会展示广告,但游戏屏幕本身 - 您实际玩的地方。现在,如果您启动了应用程序游戏(广告开始加载),然后在广告加载完成之前点击了“开始” - 它不会在应该显示的时候显示(只有一点点)Android - Admob - 加载广告,然后改变能见度导致问题

短版:调用AdView.loadAd然后广告收到,如果我们所说的广告载入AdView.setVisibility(View.VISIBLE)后会产生怪异的结果之前调用AdView.setVisibility(View.INVISIBLE)

出现这种情况:

enter image description here

代替,例如:

enter image description here

现在,点击这个小条左边是仍然算作点击广告 - 点击它可以做任何点击广告会做的事情(启动浏览器等......)

如果您回到主屏幕(I.E单击主页按钮),然后回到应用程序,广告会再次回到原来的位置。

有没有人将它嵌入它,有没有人有任何想法如何解决它?谢谢。

编辑:下面是相关的代码:

创建广告视图:

this.mAdView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxx"); 

创建布局PARAMS:

final FrameLayout.LayoutParams adViewLayoutParams = 
      new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, 
        FrameLayout.LayoutParams.WRAP_CONTENT, 
        Gravity.TOP | Gravity.CENTER_HORIZONTAL); 

创建根视图基,和其布局参数:

final FrameLayout frameLayout = new FrameLayout(this); 
final FrameLayout.LayoutParams frameLayoutLayoutParams = 
      new FrameLayout.LayoutParams(FrameLayout.LayoutParams.FILL_PARENT, 
        FrameLayout.LayoutParams.FILL_PARENT); 

添加到根视图组:

frameLayout.addView(this.mAdView, adViewLayoutParams); 

最终,设置内容视图:

this.setContentView(frameLayout, frameLayoutLayoutParams); 
+0

您使用哪种代码来设置广告的可见性?我的意思是,你的代码的设计概念是什么?你在哪里设置可视性和时间?另外,请提供您的SDK版本和adMob lib版本。我从来没有见过这样的事情。 – davidcesarino

+0

我尝试将视图设置为隐形,但无法重现您的问题。你能发布一些最小的代码,特别是你在布局中添加AdView的地方吗? –

+0

AdMob SDK版本为4.3.1 – Jong

回答

2

我设法解决它通过这种方式:

  1. 在这改变了知名度的方法,我第一次检查是在广告加载。如果不是,我不会改变可视性:

  2. 设置AdView的AdListener。在onReceivedAd方法中,我检查条件以隐藏它 - 如果它应该隐藏,则隐藏。

这样工作很好。

0

也许你可以尝试把admobView的AbsoluteLayout内,使无形的完整布局?

+1

已弃用AbsoluteLayout:http://developer.android.com/reference/android/widget/AbsoluteLayout.html – SERPRO

4
adContainer = (LinearLayout) view.findViewById(R.id.adViewContainer); 
    adContainer.setVisibility(View.GONE); 
    adContainer.addView(adView); 

//您定义adView的代码在这里。

adView.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      super.onAdLoaded(); 
      adContainer.setVisibility(View.VISIBLE); 
     } 
    });