您的位置:首页 > 移动开发 > Android开发

Android 当设置完全屏后,有时候屏幕会整体下移大概一个StatuBar的高度

2012-01-18 17:07 218 查看
Android 当设置完全屏后,有时候屏幕会整体下移大概一个StatuBar的高度

这个问题我找了好久的原因,后来总算找到了一个解决的办法,但还是不知道具体的原因。

问题是这样的,我们的应用程序已经设置为全屏了,但有的时候整个屏幕会整体往下移动一定的距离,大概是一个StatuBar的距离,然后屏幕下面的内容就看不到了。但转换到其他界面,在跳回来,就恢复正常了。因为这是个偶然的BUG,找了好久原因没有找到,后来总算找到一个解决办法,但悲剧的是这个解决方法并不适合我们这应用。

先说解决方法吧:

当我们设置了全屏:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);

设置完后,再设置一行如下所示:

// 修复全屏后有时屏幕会整体下移的问题,让StatusBar显示在可见屏幕外面。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,
WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

这样内容会显示在屏幕外面了,就不会出现整体下移的问题了。

原因可能如下,但不确定:

可能是由于屏幕锁屏后,再重新进入程序,程序并没有重新创建新的Activity,当我们重新进入程序后,系统可能会自动上移或下移一个StatusBar或TitleBar的高度(我测试了下在1.5和1.6存在这问题)。

我们的程序在后台后,(因为我们的应用程序的对象不是重建),我们从splash 的onCreate 控制转移到最后一个可见的Activity(我们在一个静态变量保持 )。所以没有splash。

我们的所有Activity包括:

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

在1.0,1.1这正常工作。 在1.5中,当我们到了重新开始的活动,它是倒推状态/通知栏(这是一个黑色的区域)和宽度上G1轨迹球可以摆动整个屏幕和该数量 。看来一些测量已短路,或状态栏,一旦走了,但现在是透明的,或其他的什么东西。发生了什么变化。

解决方法的缺陷:

这样设置后,确实不会再出现屏幕整体下移那样的问题了,但新的问题也出现了,比如:有输入法弹出来的时候,屏幕不会向上滚动,这样看到的屏幕并不完整(还有其他的问题吧,具体的记不太清了好像是的。一个星期前的事了)。所以大家用的时候注意一下,看下如果解决了这问题会不会出现新的问题。

英文文章如下地址:

具体的可参见:http://groups.google.com/group/android-developers/browse_thread/thread/2de77043f32835aa/315d393bb8334db5?pli=1文章。

欢迎大家留言讨论。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: