当 statusbar 设置为透明后以及根布局使用 android:fitsSystemWindows="true"时 toolbar 隐藏时 toolbar 会滑动到 statusbar 下面。

2016-08-13 22:54:51 +08:00
 ilumer

<item name="android:statusBarColor">@android:color/transparent</item> 布局文件

<android.support.design.widget.CoordinatorLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:fitsSystemWindows="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:elevation="4dp"
            app:layout_scrollFlags="scroll|enterAlways"/>

    </android.support.design.widget.AppBarLayout>

    <android.support.v7.widget.RecyclerView
        android:id="@+id/content_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />

</android.support.design.widget.CoordinatorLayout>

toolbar 会滑动到 statusbar 的区域,最后的状态类似于 只要我添加上android:fitsSystemWindows="true"就会出现这个问题。

16290 次点击
所在节点    Android
7 条回复
PPTing
2016-08-13 23:02:33 +08:00
给 toolbar 加个 paddingTop 就好了 具体的值你可以计算出 statubar 的高度 我记得是 24dp (api23)和 25dp
ilumer
2016-08-13 23:05:32 +08:00
@PPTing 没有使用 Immersive Full-Screen Mode ,是滑动到最后的时候会出现类似的这个状态,没有滑动还是很正常的。也是这样解决吗?
woyaokshini
2016-08-13 23:58:39 +08:00
@PPTing 同意观点,感觉可以再改进一下,也许通过 activity.getResources().getIdentifier("status_bar_height", "dimen", "android")获取会不会更好一点,考虑到机型有差异性。
ilumer
2016-08-14 00:30:58 +08:00
@woyaokshini 动态家 padding 不是在使用了全屏模式的时候才需要的吗?我这里是使用了 fitsystemwinddows 后 toolbar 和 statusbar 感觉成了一个控件 上滑隐藏的时候,全部上滑了。和我预计的 statusbar 不移动有区别(希望没有说错)类似于这个 http://stackoverflow.com/questions/32074805/toolbar-scrolling-under-status-bar
blackbbc
2016-08-14 00:41:24 +08:00
在最外面并列加一个空的 view ,宽高设置 match_parent 并且置 fitsystemwindow
然后 CoordinatorLayout 取消 fitsystemwindow ,然后在代码里面设置 margin 等于空的 view 的 margin
反正我是这么干的
miao1007
2016-08-14 15:46:08 +08:00
以前写过这个,什么 XML 都不用写,一行 Java 代码搞定
http://www.jianshu.com/p/4f71b98dd6f9
kitalphaj
2016-08-16 10:34:08 +08:00
直接在 AppBarLayout 下面加上 android:fitsSystemWindows="true"就好了,这个是标准的解决方法。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/299140

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX