【发布时间】:2021-04-13 10:26:27
【问题描述】:
我已将我的应用程序 Compose 从 1.0.0-alpha10 升级到当前最新的 1.0.0-beta03
我想在系统栏下边到边地布局我的活动内容。
除此之外,我还使用以下代码告诉系统此意图。
window?.run {
WindowCompat.setDecorFitsSystemWindows(this, false)
}
这在之前的 Compose 版本中运行良好,但似乎 beta03(或者可能是 alpha10 之后的早期版本)开始将 fitsSystemWindows 设置为 true 并使上述代码无效。 (将其移至setContent { } 下方也无效)
在 Layout Explorer 中,我可以看到 decorView 及其直接子 LinearLayout 现在有 fitsSystemWindows = true
我有下面的代码作为临时解决方案,可以实现预期的行为。
// code that used to work on alpha10
window?.run {
WindowCompat.setDecorFitsSystemWindows(this, false)
}
setContent {
MyApp()
}
// temp workaround for beta03
window?.decorView?.fitsSystemWindows = false
window?.decorView?.allViews?.forEach { view ->
view.fitsSystemWindows = false
}
这感觉就像我在与 Compose 竞争以获得预期的结果。
告诉 Compose 不要覆盖 fitsSystemWindows 的“正确”方法是什么?
【问题讨论】:
-
我认为这行不通。页面说>这个库不会禁用窗户装饰配件。为了让您的视图层次结构能够接收插图,您需要确保从 Activity 调用:WindowCompat.setDecorFitsSystemWindows(window, false)。这就是我想要做的。
-
您尝试过 e2e 提供的示例吗?它适用于 beta04 没有问题
-
对不起。不知道 beta04 出来了。将升级并尝试。
-
@GabrieleMariotti 抱歉,我尝试了 beta04,但仍然无法正常工作。我尝试了伴奏,但也没有帮助。问题不是获取窗口插入值,而是设置 fitSystemWindows,伴奏者无论如何都不会这样做。
标签: android android-jetpack-compose android-immersive