我正在尝试让边缘到边缘(https://youtu.be/OCHEjeLC_UY?t=1635)在 API 21 到 29 上正常工作。
我在我的v27\themes.xml
:
<item name="android:windowLightNavigationBar">true</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
这在我的活动中:
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) {
window.decorView.systemUiVisibility =
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
}
}
另外,我正在设置android:fitsSystemWindows=true
我的AppBarLayout
.
有了这个,它在 API >= 27 上看起来很好,其中内容在现在透明的导航栏后面滚动,但在旧 API 上,内容被黑色导航栏覆盖。
我知道我需要获取WindowInsets
并将其添加到我现有的填充中(或者如果AppBarLayout
它自己处理插图),但我无法让它与 FAB 一起使用。
我发现这篇关于将插图添加到padding
视图的文章,但因为 FAB 使用margin
我不确定,如果我在正确的轨道上。
是否有任何文档,例如,关于如何在边缘到边缘处理插入的最佳实践?似乎有些小部件喜欢AppBarLayout
优雅地处理它,但我怎样才能让 FAB 也调整它的边距?
更新 1
要指定,添加android:fitsSystemWindows=true
到CoordinatorLayout
它时也会处理插图,但有一个主要缺点:
我有两个布局,每个布局都有一个CoordinatorLayout
:“父布局”定义了CoordinatorLayout
aAppBarLayout
和 aFrameLayout
来保存实际内容和放置在后者中的 Fragment 使用的“子布局”。
因此,我无法添加android:fitsSystemWindows=true
到子布局,因为它会导致顶部(工具栏和内容之间)有一个空白空间,并且我不能将它放在父布局中,因为这样 FAB 将不会更新到插图.