强制全屏活动重新测量/重绘简历?

Ric*_*ich 8 java android

编辑添加更多细节:( 最近两个月前问过...仍然没有找到解决方案)

我的活动有点复杂的观点.在技​​术意义上并不复杂......只有很多事情要发生.此特定应用程序中的所有活动都设置为FullScreen NoTitleBar,并且它们都设置为横向方向.当应用程序被隐藏然后恢复时,我注意到在开发的早期阶段,布局不经常垂直向下滑动,就好像为标题栏和状态栏腾出空间一样.

在开发的后期,该应用程序现在调用各种外部意图.我现在注意到,当从外部处理的触发意图(例如创建"选择器"意图或选择图像)恢复时,更倾向于进行相同的转换.我能够使用完全相同的步骤不一致地重现它...有时它有时会发生.似乎在测量和布局的各个阶段之间存在竞争条件.我假设系统正在为我做的其中一个步骤是检查全屏和notitlebar,并进行必要的转换.在某些情况下可能会发生这种情况.

我把一堆日志记录,并调用invalidate(),requestLayout()等尝试捕获竞争条件,但问题似乎是我的布局外部.我的根布局的top()和bottom()值分别始终为0和屏幕的高度,即使我在问题发生时记录这个值也是如此.

是否有其他方法的Window,WindowManager或任何其他系统视图相关的对象,我可以强制完全重新测量,重绘,重新检查当前的主题/样式标志?

r-h*_*old 9

我有完全相同的问题,并尝试了几个aproches(如上所述).他们都没有工作.但是我发现了以下解决方法:

 protected void onResume() {
   super.onResume();
   handler.postDelayed(new Runnable() {
      public void run() {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                             WindowManager.LayoutParams.FLAG_FULLSCREEN);
      }
   }, 1000);    
 }
Run Code Online (Sandbox Code Playgroud)

在这个程序中,视图会做一个短暂的闪烁,但至少它不会保持歪曲.仍然需要找到一个干净的解决方案.然而,这支持了你的论点,即存在某种时间或种族问题.