实施带有智能阴影和半透明状态栏的Gmail应用程序之类的工具栏

时间:2019-07-10 17:44:23

标签: android android-recyclerview gmail android-toolbar shadow

如何实现像新的Gmail应用程序这样的工具栏,该工具栏是半透明的,并且具有与状态栏相同的颜色,并且仅在滚动时才具有阴影。

我已在此处上传屏幕截图:gmail

这是我主要活动布局的代码:

<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/ima_default_background"
android:fitsSystemWindows="true"
app:layout_behavior="android.support.design.widget.BottomSheetBehavior">

<!--the frame I load my fragments in-->
<FrameLayout
    android:id="@+id/frame_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<!--toolbar frame-->
<FrameLayout
    android:id="@+id/toolbar_frame_layout"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize">

    <net.karthikraj.shapesimage.ShapesImage
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:src="@color/tool_bar_color"
        app:shapeDrawable="@drawable/one_rounded_rectangle_white_24dp" />

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/tool_bar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        app:layout_scrollFlags="scroll|enterAlways"
        app:titleTextAppearance="@style/ActionBar.nameText" />
</FrameLayout>


<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/navigation"
    style="@style/navigation_bottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:foreground="?attr/selectableItemBackground"
    app:itemIconTint="@color/bottom_nav_color_selector"
    app:itemTextAppearanceActive="@style/BottomNavigation.ActiveItemTextAppearance"
    app:itemTextColor="@color/bottom_nav_color_selector"
    app:labelVisibilityMode="selected"
    app:menu="@menu/navigation" />

</androidx.coordinatorlayout.widget.CoordinatorLayout>

1 个答案:

答案 0 :(得分:0)

我不确定是否已经有任何本机实现可用于此。我可以想到的一种方法是在工具栏下添加另一个视图,该视图的灰色背景高度约为1dp,然后实现此滚动侦听器https://stackoverflow.com/a/10198865/9416912

为视图提供一个ID,当用户开始滚动时,您可以通过淡入淡出的动画使其可见。然后,当用户停止时,您可以使视图不可见并淡出该视图。