让Toolbar跟随RecyclerView/WebView滚动

2019-04-22  本文已影响0人  Richile

这里我使用了一个开源库来设置statusbar的颜色,在app的build.gradle中添加

api 'com.jaeger.statusbarutil:library:1.5.1'

在onCreate中初始化statusbar的颜色为透明:

private void initStatusBar() {
        // 设置status bar的颜色为透明,这个接口需要设置第3个参数(透明度)
        StatusBarUtil.setColor(this, Color.TRANSPARENT, 0);
        // 设置布局可以到status bar的区域
        getWindow().getDecorView()
                .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }

接下来就是布局了,在布局中添加一个AppBarLayout,并且它的子View是Toolbar

<android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="?attr/colorPrimary"
            android:minHeight="?attr/actionBarSize"
            android:fitsSystemWindows="true"
            app:layout_scrollFlags="scroll|enterAlways">

            <TextView
                android:id="@+id/tv_toolbar_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/app_name"
                android:layout_gravity="center"
                android:maxLines="1"
                android:ellipsize="end"
                android:layout_marginRight="8dp"
                android:textColor="@android:color/white"
                android:textSize="18sp" />

        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
    
    <android.support.v4.widget.NestedScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior">

        <WebView
            android:id="@+id/webview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

    </android.support.v4.widget.NestedScrollView>

这个Toolbar在AppBarLayout中就可以移动了,添加
app:layout_scrollFlags="scroll|enterAlways"意思是跟随下面的NestedScrollView的子View滚动,scroll表示上滑时跟着移动出去,enterAlways表示一旦下滑,就马上进入到屏幕,要实现跟着滚动,就要通过设置NestedScrollView的子View的属性app:layout_behavior="android.support.design.widget.AppBarLayout$ScrollingViewBehavior"让它们有关联。

上一篇下一篇

猜你喜欢

热点阅读