在我的应用中,我有一项活动。此活动的主题是正常的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
,我似乎无法获得它是正确的。
我不知道我做错了什么。下面有两个屏幕截图显示问题。
还有(奖金问题!)
在同一个Activity中,我将Viewpager
设置为具有ScrollingViewBehavior。
填充Viewpager
的片段有一个ViewFlipper
,可以切换其中一个:loadingView(ProgressBar
),contentView(RecyclerView
)和emptyView({{1} })。
这确保了如果theres内容,则活动具有所需的滚动效果。
emptyView出现问题,因为它没有正确居中。我附上了一张图片。
如何纠正(或破解)此行为?
答案 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中以解决问题。