某些设备上Android框架布局堆栈显示不正确

问题描述:

即使手机处于离线状态也能够控制广告呈现我将 admob广告放入了LinearLayout中,这是框架布局,因此广告 将显示在游戏。在HTC Desire(2.2)上,视图正确显示 广告位于屏幕上方,但Samsung Galaxy SII(2.3.1)广告位于游戏下方 - 它不可见,但如果按下该区域,则会触发广告行为。某些设备上Android框架布局堆栈显示不正确

版式文件:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 

<LinearLayout 
    android:id="@+id/game" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 
</LinearLayout> 

<LinearLayout 
    android:id="@+id/ads" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:background="@color/black" 
    android:orientation="vertical" > 

</LinearLayout> 
</FrameLayout> 

代码加载广告:

private void loadAds() { 
    LinearLayout layout = (LinearLayout) findViewById(R.id.ads); 
    final AdView adView = new AdView(this, AdSize.BANNER, ADMOB_ID); 
    layout.addView(adView); 
    final AdRequest request = new AdRequest(); 
    adView.loadAd(request); 
} 

编辑:添加bringToFront()没有帮助。在SII上,这个广告在没有完全隐藏的位置有 ,大约3-5px的顶部可见。

编辑2:事实证明,问题是由隐藏在onCreate中的广告布局造成的。解决方案是在执行onCreate之后通过处理程序隐藏它。

您可以做的是在布局中包含广告,然后根据您是否要显示广告来切换广告的可见性。

//To show the view 
adView.setVisibility(View.VISIBILE); 

//To hide the view 
adView.setVisibility(View.GONE); 

您也可以尝试使用当前的代码在您的AdView上调用bringToFront()。

+0

bringToFront()没有帮助。这就是我所做的。我在这里试图解决的问题是,当电话处于脱机状态时没有来自广告群体的广告时可以投放广告。 – janst 2012-08-09 14:09:21

+0

这似乎有点令人困惑,这个问题似乎表明广告的一部分是可见的?或者,广告应该定位在哪个空白处?另外,是否有可能在尝试显示广告之前没有检索并缓存SII上的广告(例如,在切换到脱机状态之前是否使用该应用程序并在线查看多个应用程序?)对不起,没有帮助,还有祝你好运! – Zambotron 2012-08-09 17:28:01