joy keeps flowin'

实现Material风格的ActionBar滚动变色

xx
目次

许许多多Material风格的Android应用支持滚动后改变Action Bar和状态栏的颜色, 放一张示例图:

LibChecker

实现 #

外层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

标签:
Categories: