问题标签 [windowinsets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
64 浏览

android - WindowCompat.setDecorFitsSystemWindows 不适用于 API>29 的对话框窗口

它在 API <= 29 的设备上运行良好,但在 API>=30 上 setDecorFitsSystemWindows 被忽略。

有谁知道为什么?

0 投票
0 回答
77 浏览

android - 显示/隐藏工具栏时,为什么它包含在插图中?

我一直在尝试调试在全屏活动中错误地应用填充的问题。该应用程序有一个真正全屏的片段,内容位于系统窗口后面,而另一个片段没有并且应该使用插图向内填充内容。当我尝试在一个简单的 repo 中重新创建时,我注意到当我从一个片段导航到另一个片段时,顶部插图似乎不包括工具栏的高度,而隐藏和显示工具栏。

我有一个相对简单的设置:一个带有两个片段的活动,使用 NavGraph 设置起始目的地以及在片段一和片段二之间导航,活动持有FragmentContainerView. 在 FragmentOne 中,我还有三个按钮:一个用于隐藏系统栏,一个用于显示它们,第三个用于导航到另一个片段。

我会尽量保持代码简洁,所以我故意不包括所有内容。主题包括<item name="android:windowActionBarOverlay">true</item>and<item name="windowActionBarOverlay">true</item>它 extends Theme.MaterialComponents.DayNight.DarkActionBar,所以它有一个工具栏。请参阅下面的代码代码中描述的日志记录结果。

活动

片段一

结果(请注意,我描述的是上面命名的每个“日志”,因此是 DecorRootView Insets、FragmentContainerView Insets 和 Fragment Insets)

  1. 单击隐藏按钮:所有 3 都将插入显示为 0
  2. 点击显示按钮:FragmentContainerView Insets 和 Fragment Insets 显示顶部 inset 为 220,而 DecorRootView Insets 显示为 66
  3. 导航到 FragmentTwo:DecorRootView Insets 和 FragmentContainerView Insets 都将顶部 inset 显示为 66

为什么在结果 #2 中包含工具栏高度?

0 投票
0 回答
37 浏览

android - 用 WindowInsetsController 替换不推荐使用的 window.decorView.systemUiVisibility

我有一个带有片段容器的活动。另外,我有三个片段FragmentA, FragmentB, FragmentC

当我导航到时,FragmentC我希望半透明状态栏与内容重叠。在所有其他情况下,当所有内容都在状态栏下(没有重叠)时,我想使用默认外观。为此,我将我的 AppTheme 修改为:

另外,我已经实现了这样的工具来动态改变外观的“模式”:

onResume我的BaseFragment我用它来改变“模式”:

它运作良好,但我想避免使用已弃用的功能。我知道,弃用的替代品window.decorView.systemUiVisibility是使用WindowInsetsController. 但我不知道如何将它用于我的目的,因为我只找到了隐藏状态栏的解决方案,如下所示:

所以,我的问题是制作的替代品是什么systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

0 投票
0 回答
27 浏览

android - Android 11(API 30)中的插图

我正在使用 WindowManager 获取插图,在某些情况下 inset.top 返回 0。这是我获取 WindowManager 的方式:

虽然上下文来自活动(片段、对话框等),但一切正常(即使在 API30 中)?在 Android 12(API 31)中对此进行了测试,一切正常,但在 android 11 上,当上下文来自行为(我创建了自定义)时,它 inset.top 为 0,但底部是正确的。真的不知道为什么会这样?已经认为这是 API 30 中的错误