Admob 下推所有内容(包括window)!
Admob pushes all content down (including window)!
我相信我遇到了最独特、最奇怪的问题。
所以为了简单起见,我做了世界上最简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:background="#4d9345"
android:layout_height="match_parent" >
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
ads:adSize="BANNER"
ads:adUnitId="@string/admob">
</com.google.android.gms.ads.AdView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Button" />
</RelativeLayout>
然后是代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setContentView(R.layout.myact);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest.Builder adRequest = new AdRequest.Builder();
AdRequest req = adRequest.build();
mAdView.loadAd(req);
}
情景 1:
如果我在按下启动此 activity 的按钮时启动此 activity,则一切正常。 activity 按预期显示(下图):
情景 2:
如果此 activity 是从 SCREEN OFF 广播接收器启动的,它会在加载广告后立即弄乱布局。包括 window 在内的所有内容都被下推。 (下图):
你可以看到连它的parent(Relative Layout)都被压低了(你可以看到上面的广告是黑色的)
情景 3:
如果我对 XML 布局代码进行一些更改,则会给 admob 视图留出顶部边距:
android:layout_marginTop="25dp"
结果是内容没有下推:
注意事项:
此 activity 在某些情况下启动,但仅在屏幕关闭时启动。
如果我不使用requestWindowFeature(Window.FEATURE_NO_TITLE);在我的代码中,它没有问题,但使用此功能至关重要。
使这个问题更加奇怪:
3. 它只在 Samsung Galaxy S3 mini 上执行此操作。它可以在 HTC One、HTC Wildfire 和其他一些产品上正常运行。 (但也许有些设备与 galaxy s3 mini 完全一样)。
4. 我只在 Admob 和 Leadbolt 广告上遇到过这种行为。使用 Amazon、Mmedia 甚至我自己的广告(从我的服务器中提取),都没有问题..
虽然我没想到,因为这是最奇怪的问题,我真的很想得到一些帮助..
提前致谢。
这可能是正确隐藏或显示操作栏的问题,必须对 window 标志做一些事情。
查看这个旧 post,并尝试解决方案。它可能会起作用。
Android - status bar prevents full screen
我相信我遇到了最独特、最奇怪的问题。
所以为了简单起见,我做了世界上最简单的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:background="#4d9345"
android:layout_height="match_parent" >
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_alignParentTop="true"
ads:adSize="BANNER"
ads:adUnitId="@string/admob">
</com.google.android.gms.ads.AdView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:text="Button" />
</RelativeLayout>
然后是代码:
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
setContentView(R.layout.myact);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest.Builder adRequest = new AdRequest.Builder();
AdRequest req = adRequest.build();
mAdView.loadAd(req);
}
情景 1:
如果我在按下启动此 activity 的按钮时启动此 activity,则一切正常。 activity 按预期显示(下图):
情景 2:
如果此 activity 是从 SCREEN OFF 广播接收器启动的,它会在加载广告后立即弄乱布局。包括 window 在内的所有内容都被下推。 (下图):
你可以看到连它的parent(Relative Layout)都被压低了(你可以看到上面的广告是黑色的)
情景 3:
如果我对 XML 布局代码进行一些更改,则会给 admob 视图留出顶部边距:
android:layout_marginTop="25dp"
结果是内容没有下推:
注意事项:
此 activity 在某些情况下启动,但仅在屏幕关闭时启动。
如果我不使用requestWindowFeature(Window.FEATURE_NO_TITLE);在我的代码中,它没有问题,但使用此功能至关重要。
使这个问题更加奇怪: 3. 它只在 Samsung Galaxy S3 mini 上执行此操作。它可以在 HTC One、HTC Wildfire 和其他一些产品上正常运行。 (但也许有些设备与 galaxy s3 mini 完全一样)。 4. 我只在 Admob 和 Leadbolt 广告上遇到过这种行为。使用 Amazon、Mmedia 甚至我自己的广告(从我的服务器中提取),都没有问题..
虽然我没想到,因为这是最奇怪的问题,我真的很想得到一些帮助..
提前致谢。
这可能是正确隐藏或显示操作栏的问题,必须对 window 标志做一些事情。
查看这个旧 post,并尝试解决方案。它可能会起作用。 Android - status bar prevents full screen