问题标签 [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 投票
1 回答
1450 浏览

android - 如何设置完全透明的导航栏(NOT TRANSLUCENT)并不断接收窗口插图更新

下图基本上是我的目标,一个完全透明的导航栏(不是半透明的),它后面的内容不断得到插入更新,所以它在它后面绘制,但没有得到导航控件覆盖的任何 UI。

在此处输入图像描述

到目前为止,实现上图中结果的唯一方法是将标志设置FLAG_LAYOUT_NO_LIMITS为活动。问题是,完成此操作后,如果启用了手势导航,应用程序将不再接收任何插图,除了手势插图。

我已经尝试了所有我能想到的组合,但到目前为止我完全无法实现 100% 透明的导航栏 + 窗口插图。

我假设在设置该标志时导航栏不透明的原因是因为系统窗口插图现在为 0,因此半透明区域缩小到 0 高度,使导航控件没有背景。

我也试过设置

<item name="android:navigationBarColor">@android:color/transparent</item>

然而,这一切只是让导航栏完全变白,并且内容不会显示在它后面。

对于我进行的所有测试,我还启用和禁用了以下功能

<item name="android:windowDrawsSystemBarBackgrounds">true</item>

我已经研究了 Window Insets 噩梦的高度和之上,并且有一种方法可以通过 找到窗口 insets getWindow().getDecorView().getRootWindowInsets(),但是我将遇到在不需要时添加 insets 的问题(例如,多窗口模式)和我仍然不会收到窗口插图更新,例如打开键盘时。

我看过 (@chris-banes) Chris Banes 的“成为一名主要的窗户装配工”,但从未涵盖过这个特定场景。

这是不可能的吗?我们可以为状态栏实现这个结果,但我们永远无法为导航栏做同样的事情?如果没有,那么如何实现呢?

我想要的只是一个 100% 透明(非半透明)的导航栏,并且应用程序不断接收具有预期值的窗口插图,而不是所有值的 0。

0 投票
2 回答
1169 浏览

android - 未调用 ViewPager2 OnApplyWindowInsetsListener

我在片段中有一个 FAB,ViewPager2它在边缘到边缘时应该尊重窗口插图。我OnApplyWindowInsetsListener在 FAB 上添加了一个更新它的保证金。这在使用旧的ViewPager.

当更新到ViewPager2它时,似乎OnApplyWindowInsetsListener一开始没有调用。但是,当我启动ActionMode. 然后,调用监听器并使用新的边距,直到我离开父片段。


我已经分叉了演示项目来说明问题。请参阅https://github.com/hardysim/views-widgets-samples/tree/edge-to-edgeParallelNestedScrollingActivity上分支edge-to-edge上的“带有嵌套 RecyclerViews 的 ViewPager2”示例 ( ) 。

在这里,我向RecyclerViewViewPager2 页面上使用的(嵌套)添加了一个 FAB,并将 Activity-UI 设置为边对边(请参阅 参考资料View.goEdgeToEdge())。然后,FAB 位于导航栏后面,我们需要更新它的边距以添加窗口插图。

这就是它不起作用的地方(但它适用于旧的ViewPager)。

0 投票
0 回答
358 浏览

android - 导航组件 FragmentContainerView 在 fitSystemWindows=true 下不能很好地发挥作用

我一直在努力使用最新的 Android 架构组件更新我的最佳实践展示应用程序,并遇到了这个问题。

我正在使用导航组件和片段来创建我的屏幕。因为我更喜欢手动管理我的窗口插图(Chris Banes 的Insetter是一个非常简单的解决方案,我全心全意地推荐它!),我所有的布局根都fitsSystemWindows设置了适当的标志。

问题出现在最初线性导航的第三个片段上,UserHomeFragment. 它与其他布局没有什么不同,尽管它是第一个更复杂的布局。这是迄今为止发生这种情况的唯一片段。

导航到此片段后,一直到主要内容视图的容器突然失去了它们的插图意识,并应用了默认插图——这违背了我的意愿,因为我特别要求不要应用插图。我不明白为什么以这种方式发生的简单片段事务会突然影响一直到根视图的视图。

0 投票
2 回答
680 浏览

android - 运动布局不应用窗口插图

OnApplyWindowInsetsListener尽管在侦听器中显式地使用了插图,但运动布局不会将任何窗口插图传递给孩子。

applyMotionScene当动作布局的属性设置为时,插入会正确应用false

0 投票
2 回答
1091 浏览

xamarin.android - Xamarin (Android):检测设备是否有显示槽口

我正在尝试检测运行我的应用程序的设备是否有缺口。

有我需要的,但我无法在 WindowInset 类中找到 getDisplayCutout() 的 Xamarin 等效项。

0 投票
1 回答
1110 浏览

android - 如何在 Android 11(Android R 或 Android API 级别 30)中使用 windowinsetsanimation

新的 Android 版本 (Android 11) 添加了一组新的 API,让您可以将应用程序的内容与 IME(输入法编辑器,也称为软键盘)和系统栏同步,因为它们在屏幕上和屏幕外显示动画,从而更轻松地创建自然、直观和无卡顿的 IME 转换。

那么,如何在android r(Android 11)中应用windowinsetsanimation?

0 投票
0 回答
67 浏览

android - 如何在窗口插图上方制作自定义小吃栏(支持 API 14)?

我有这个布局

我有一个自定义课程:

为了:

调用时"show()",它会显示一个具有自定义布局的 android 小吃店。

在此处输入图像描述

当我显示 amy_snackbar时,它会在底部导航栏(z 轴)下方看到。

如何使其位于导航栏上方(z 轴和 y 轴)?

我可以确保布局具有不是根视图的框架布局。所以我认为我的布局会好的。不?

我看到了这篇文章,但我需要支持 API 14,并且 onApplyWindowInsets() 来自 Lollipop。

0 投票
1 回答
354 浏览

android - AndroidX Core v1.5.0-alpha02中的WindowInsetsCompat

随着 AndroidX Core v1.5.0-alpha02 中 WindowInsetsCompat 的发布,相当于

不给出@RequiresApi(R)注释警告?

0 投票
1 回答
5696 浏览

android - Android 11 - window.setDecorFitsSystemWindow 不在状态和导航栏后面显示屏幕

我正在尝试将我的应用程序更新到 Android 11。我的应用程序的许多屏幕都是在状态栏后面使用应用程序内容设计的。我将我的 gradle 更新到 Android 11 并开始更新 Window 代码以获取 Android 11 设备的无限制行为。我在我的 Activity onCreate 方法中使用以下代码为预 Android 11 设备实现了我想要的结果:

我试图通过使用为 Android 11 获得相同的无限制行为w.setDecorFitsSystemWindows(false);

我尝试使用它而不是使用标志,将它与标志一起使用并传递真假,在设置标志之前和之后设置它,但我总是看到一个白色的状态和系统导航栏,而不是它们后面的我的应用程序内容。我尝试了什么:

我的应用程序仍然是 Java 代码,我尝试window?.setDecorFitsSystemWindows(false)在另一个使用 Kotlin 代码的应用程序中运行它没有任何问题。

有谁知道我在这里错过了什么或做错了什么?

0 投票
2 回答
1685 浏览

android - Android API 级别 30 setSystemBarsAppearance 不会覆盖主题数据

Pre-Android 11(API 级别 30)我已经 <item name="android:windowLightStatusBar">true</item> 在我的主题中设置,并且在代码中另外更改了这个(需要时)

然而,Android-30 增加了一种新的控制方式

但我的问题是这不能覆盖主题集值,因此我需要全部使用样式或全部使用代码。

我的问题是,如果这是打算这样,还是我在某处遗漏了什么?