当前位置: 首页 > 面试题库 >

强制全屏活动以在简历上重新测量/重画?

阴高刚
2023-03-14
问题内容

编辑后添加了更多详细信息:( 最初在两个月前被问到……仍然没有找到解决方案)

我的活动有些复杂。从技术上讲并不复杂…发生了很多事情。此特定应用程序中的所有活动都设置为FullScreen
NoTitleBar,并且都设置为横向。我在开发初期就注意到,当应用程序被隐藏然后又恢复时,布局很少有垂直向下滑动的趋势,好像为标题栏和状态栏腾出了空间。

在开发的后期,该应用程序现在可以调用各种外部意图。我现在注意到,从外部处理的激发意图(例如,创建“选择器”意图或拾取图像)恢复时,更倾向于进行相同的转换。我能够使用完全相同的步骤来不一致地重现它……有时它有时会发生。似乎在测量和布局的各个阶段之间都存在竞争状况。我假设系统为我执行的这些步骤之一是检查全屏和标题栏,并进行必要的更改。在某些情况下,这可能会发生得很晚。

我进行了大量日志记录,并调用invalidate(),requestLayout()等以试图捕获竞争状况,但问题似乎出在我的布局外部。我的根目录布局的top()和bottom()值始终分别为0和屏幕的高度,即使在发生问题时记录此内容时也是如此。

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


问题答案:

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

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

视图将在此过程中短暂闪烁,但至少不会被裁剪。仍然需要找到干净的解决方案。但是,这支持您的论点,即某种计时或竞赛问题。



 类似资料:
  • 我的问题是,我需要制作一个不断更新的GUI,因为我得到的值可以从数据库中更改,并且我在图形区域中遇到了一些问题。 我使用Graphics2D中的Drawline和Drawstring打印数据库中的值,这些字符串和线条移动并更改值,所以我需要调用repaint();使用计时器使它们出现在jpanel中,问题是repaint();不是在绘制之前移除背景中的旧绘画,而是当我完全调整所有更新的大小时。 我

  • 问题内容: 问题: 当我两次运行相同的go测试时,第二次运行根本没有完成。结果是第一次运行时的缓存结果。 链接 我已经检查过https://golang.org/cmd/go/#hdr- Testing_flags, 但是没有cli标志用于此目的。 题: 是否有可能强制执行测试以始终运行测试而不缓存测试结果。 问题答案: 测试标志docs中描述了一些选项: :使所有测试结果失效 在测试运行中使用不

  • 问题内容: 可以说我有一个具有条件渲染的视图组件: MyInput看起来像这样: 可以说是真的。每当我将其切换为false并渲染另一个视图时,都只会重新初始化。还会从中预填充值(如果条件更改之前已给出值)。 如果我将第二个渲染例程中的标记更改为如下所示: 似乎一切正常。看起来React只是无法区分’职位-头衔’和’失业原因’。 请告诉我我做错了什么… 问题答案: 可能发生的事情是React认为在渲

  • 我想在设备重新启动后与启动通知(如消息、Viber通知、Whatsapp等)并排启动锁定屏幕活动。如何做到这一点??.我已经制作了一个广播接收器,它接收引导完成操作,然后启动一个服务,该服务再次用intent.action_screen_off和intent.action_screen_on意图过滤器注册相同的接收器,该接收器启动锁定屏幕活动。以下是我的代码: AndroidManifest.xm

  • 问题内容: 我在程序开始时,根据数据库中的某些内容,以编程方式在JScrollPane中添加了许多组件(JPanels,JLabels等)。 似乎对于GUI(?)而言,此过程太快了,因此JScrollPane并不总是正确更新,即,即使内部JPanel大于可见区域,滚动条也不可见。 调整窗口大小(JFrame)可以解决此问题,因为我认为Java在调整组件大小时会重新打印它们。 作为测试,我添加了一个

  • 问题内容: 由于存在题外问题,这是一种重写: 我写了一个下拉菜单指令。我将指令两次用作工作流。第一个下拉菜单通过更改操作触发第二个模型的刷新。尽管模型正确更新,但视图未正确更新。在下拉菜单中多次选择项目时,即使角度模型的console.log()正确,第二个下拉菜单也会显示带有新项目的旧项目。 该视图具有无限递归。使用具有ng / template的ID的ng-include可以自我递归: 我最初