fitsSystemWindows在添加的片段中不起作用

efe*_*ney 5 android android-fragments androiddesignsupport

在我的应用程序中,我有一个活动.此活动的主题是正常的pre-L,但是对于L及以上,它被覆盖,具有:

...
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/statusTrans</item>
...
Run Code Online (Sandbox Code Playgroud)

此活动具有这样的布局(fsw表示该节点适合SystemWindows)以提供Material效果.

CoordinatorLayout (fsw)
  L AppBarLayout (fsw)
      L CollapsingToolbarLayout (fsw)
          L ImageView (fsw)
          L Toolbar
      L TabLayout
  L ViewPager
  L FAB
Run Code Online (Sandbox Code Playgroud)

事情是,我DialogFragment通过事务向这个活动添加一个全屏,通过添加到具有这种布局的android.R.id.content

CoordinatorLayout (fsw)
  L AppBarLayout (fsw)
      L CollapsingToolbarLayout (fsw)
          L FrameLayout
          L Toolbar
      L TabLayout
  L NestedScrollView
Run Code Online (Sandbox Code Playgroud)

初始布局绘制statusBar,然后Toolbar按预期绘制它(即插入内插),但添加的片段布局Toolbar直接在statusBar下绘制,我似乎无法将其绘制正确.

我不知道我做错了什么.下面有两个屏幕截图显示问题.

一 二

.

还有(奖金问题!)

在同一个Activity中,我设置了Viewpager一个ScrollingViewBehavior.填充的片段Viewpager有一个ViewFlipper切换其中一个:loadingView(ProgressBar),contentView(RecyclerView)和emptyView(LinearLayout).这确保了如果theres内容,则活动具有所需的滚动效果.

emptyView出现问题,因为它没有正确居中.我附上了一张图片.

我该如何纠正(或破解)这种行为?

三

j2e*_*nue 2

无论您在何处替换片段,请确保其位于协调器布局中。例如,如果您的 xml 如下所示:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:ignore="MissingPrefix">

    <FrameLayout
        android:id="@+id/fl_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
Run Code Online (Sandbox Code Playgroud)

然后将其包装在协调器布局中以解决问题。