fitsSystemWindows在添加的片段

时间:2016-04-10 00:10:18

标签: android android-fragments androiddesignsupport

在我的应用中,我有一项活动。此活动的主题是正常的pre-L,但是对于L及以上的重写,使用:

...
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@color/statusTrans</item>
...

此活动有这样的布局(fsw表示节点适合系统窗口)以提供材质效果。

CoordinatorLayout (fsw)
  L AppBarLayout (fsw)
      L CollapsingToolbarLayout (fsw)
          L ImageView (fsw)
          L Toolbar
      L TabLayout
  L ViewPager
  L FAB

事情是,我通过事务向此活动添加全屏DialogFragment,方法是将其添加到具有此布局的android.R.id.content

CoordinatorLayout (fsw)
  L AppBarLayout (fsw)
      L CollapsingToolbarLayout (fsw)
          L FrameLayout
          L Toolbar
      L TabLayout
  L NestedScrollView

初始布局绘制statusBar,然后按预期绘制它下面的Toolbar(即应用了插图),但添加的片段布局直接在statusBar下绘制Toolbar,我似乎无法获得它是正确的。

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

One Two

还有(奖金问题!)

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

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

如何纠正(或破解)此行为?

Three

1 个答案:

答案 0 :(得分: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" />

然后将其包装在coordinatorlayout中以解决问题。