实现Material风格的ActionBar滚动变色
xx
目次
许许多多Material风格的Android应用支持滚动后改变Action Bar和状态栏的颜色, 放一张示例图:
实现 #
外层ViewGroup改用CoordinatorLayout #
CoordinatorLayout才支持内部View滚动后调用behavior的方法, 自定义View也能实现.
滚动View添加flag #
1
2
| app:layout_behavior="@string/
appbar_scrolling_view_behavior"
|
做出反应的View添加style #
1
| android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
|
效果图:
完成代码 #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".home.MainActivity">
<!-- AppBarLayout,include Toolbar -->
<com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:liftOnScroll="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
style="?actionBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
app:titleTextColor="@color/black" />
</com.google.android.material.appbar.AppBarLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_installed_app"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
注: 不要忘记设置SupportActionBar