这里我使用了一个开源库来设置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"让它们有关联。