V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ilumer
V2EX  ›  Android

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

  •  1
     
  •   ilumer · 2016-08-13 22:54:51 +08:00 · 16827 次点击
    这是一个创建于 3049 天前的主题,其中的信息可能已经有所发展或是发生改变。

    <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"就会出现这个问题。

    第 1 条附言  ·  2016-08-14 01:28:41 +08:00
    7 条回复    2016-08-16 10:34:08 +08:00
    PPTing
        1
    PPTing  
       2016-08-13 23:02:33 +08:00 via Android
    给 toolbar 加个 paddingTop 就好了 具体的值你可以计算出 statubar 的高度 我记得是 24dp (api23)和 25dp
    ilumer
        2
    ilumer  
    OP
       2016-08-13 23:05:32 +08:00
    @PPTing 没有使用 Immersive Full-Screen Mode ,是滑动到最后的时候会出现类似的这个状态,没有滑动还是很正常的。也是这样解决吗?
    woyaokshini
        3
    woyaokshini  
       2016-08-13 23:58:39 +08:00
    @PPTing 同意观点,感觉可以再改进一下,也许通过 activity.getResources().getIdentifier("status_bar_height", "dimen", "android")获取会不会更好一点,考虑到机型有差异性。
    ilumer
        4
    ilumer  
    OP
       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
        5
    blackbbc  
       2016-08-14 00:41:24 +08:00
    在最外面并列加一个空的 view ,宽高设置 match_parent 并且置 fitsystemwindow
    然后 CoordinatorLayout 取消 fitsystemwindow ,然后在代码里面设置 margin 等于空的 view 的 margin
    反正我是这么干的
    miao1007
        6
    miao1007  
       2016-08-14 15:46:08 +08:00
    以前写过这个,什么 XML 都不用写,一行 Java 代码搞定
    http://www.jianshu.com/p/4f71b98dd6f9
    kitalphaj
        7
    kitalphaj  
       2016-08-16 10:34:08 +08:00
    直接在 AppBarLayout 下面加上 android:fitsSystemWindows="true"就好了,这个是标准的解决方法。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3363 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 11:18 · PVG 19:18 · LAX 03:18 · JFK 06:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.