【发布时间】:2016-09-03 13:52:55
【问题描述】:
我有SingleFramgnetActivity,其目的只是保存和替换其中的片段。
布局如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context=".SingleFragmentActivity"
>
<include layout="@layout/toolbar"/>
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</LinearLayout>
我正在替换 FrameLayout 中的 Fragments。当我在 Fragment 布局上将 fitsSystemWindows 设置为 true 时,它没有响应。实际上它只有在创建Activity 时才有效,但是一旦我替换了FrameLayout 中的Fragment,fitsSystemWindows 参数将被忽略,并且布局位于状态栏和导航栏下方。
我发现一些 solution 带有自定义 FrameLayout,它使用了已弃用的方法,但由于某种原因,它对我不起作用(与普通 FrameLayout 的结果相同),我也不喜欢使用已弃用方法的想法。
【问题讨论】:
-
你知道 fitSystemWindow 的作用吗?
-
我希望我做对了,基本上当它设置为true时,视图及其所有子视图不应该作为状态栏或导航栏显示在系统窗口下。设置为 false 时,应显示在系统窗口下。所以基本上我可以设置我想在状态栏和导航栏(fitsSystemWindow = true)和状态栏和导航栏下的背景图像(fitsSystemWindow = false)之间渲染整个Fragment布局。在不替换碎片之前,我可以完全按照自己的意愿制作。
-
我遇到了同样的问题。我最终制作了一个 FrameLayout 来保存窗口插图并将它们重新分配给新的孩子。我将代码放在Github gist 中。让我知道这是否适合你!
标签: android android-layout android-fragments