com.google.android.material.behavior.HideBottomViewOnScrollBehavior Snackbar 问题

com.google.android.material.behavior.HideBottomViewOnScrollBehavior issue with Snackbar

我的 activity 中有一个 协调器布局 作为我的父布局,还有一个 浮动操作按钮 。当我在屏幕上显示 SnackBar 时,它出现在 FAB 下方并将 FAB 向上推,这是正常行为。现在我想在滚动中隐藏 FAB,我在我的 FAB app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" 中使用了它并且它工作正常。但是这样做之后,当我展示我的小吃店时,它会出现在 FAB 上,而不是出现在 FAB 下方。

正如您在下面看到的,当我从 FAB 中删除 app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" 时,小吃店的行为是正常的,但 FAB 不会隐藏在滚动条上

但是在这里,当我在 FAB 中添加 app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior" 时,FAB 隐藏在滚动条上,但小吃店出现在 FAB 上方,这是不正常的行为。

我希望 FAB 隐藏在滚动条上,但也希望 Snack Bar 显示在 FAB 下方,但我不知道该怎么做。

这是我的主要代码 activity:

<layout 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">

<androidx.drawerlayout.widget.DrawerLayout
    android:id="@+id/Drawer_Main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".ui.main.LockyActivity"
    tools:openDrawer="start">

    <!--
    ****************************************
    **** This is the main coordinator layout
    ****************************************
    -->
    <androidx.coordinatorlayout.widget.CoordinatorLayout
        android:id="@+id/Layout_Coordinator_Main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">


        <!--
        ********************************************************
        **** This is the app bar layout which contains the
        **** main Material Toolbar.
        ********************************************************
        -->

        <com.google.android.material.appbar.AppBarLayout
            android:id="@+id/Layout_AppBar_Main"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:outlineAmbientShadowColor="@color/colorShadowColor"
            android:outlineSpotShadowColor="@color/colorShadowColor"
            app:liftOnScroll="true"
            tools:targetApi="p">

            <com.google.android.material.appbar.MaterialToolbar
                android:id="@+id/Toolbar_Main"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/colorOnSurface"
                android:paddingStart="8dp"
                android:paddingEnd="8dp">

                <TextView
                    android:id="@+id/Toolbar_Main_Title"
                    style="@style/Locky.Text.Title6.Toolbar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="@string/app_name" />

                <LinearLayout
                    android:id="@+id/Toolbar_Search_Layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:gravity="center_vertical"
                    android:orientation="horizontal"
                    android:paddingStart="8dp"
                    android:paddingEnd="8dp"
                    android:visibility="gone">

                    <EditText
                        android:id="@+id/Toolbar_Search_Box"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:background="@null"
                        android:hint="@string/field_hint_item_search"
                        android:imeOptions="flagNoExtractUi|actionSearch"
                        android:importantForAutofill="no"
                        android:inputType="textNoSuggestions" />

                    <ImageButton
                        android:id="@+id/Toolbar_Search_Close"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:background="?attr/actionBarItemBackground"
                        app:srcCompat="@drawable/ic_close" />
                </LinearLayout>

            </com.google.android.material.appbar.MaterialToolbar>

        </com.google.android.material.appbar.AppBarLayout>


        <!--
        *****************************************************
        **** This is the main content fragment container ****
        *****************************************************
        -->
        <include layout="@layout/include_content_container_main" />


        <!--
        ********************************************************
        **** These are the two Floating Action Buttons which
        **** appears on the main screen screen.
        ********************************************************
        -->
        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/FAB_Search"
            style="@style/Locky.FloatingActionButton.Mini"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="0dp"
            android:layout_marginBottom="85dp"
            app:layout_anchor="@id/FAB_Add"
            app:layout_anchorGravity="top|center_horizontal"
            app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior"
            app:srcCompat="@drawable/ic_search" />

        <com.google.android.material.floatingactionbutton.FloatingActionButton
            android:id="@+id/FAB_Add"
            style="@style/Locky.FloatingActionButton.Normal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_margin="@dimen/fab_margin"
            app:layout_behavior="com.google.android.material.behavior.HideBottomViewOnScrollBehavior"
            app:srcCompat="@drawable/ic_add" />

    </androidx.coordinatorlayout.widget.CoordinatorLayout>


    <!--
     ****************************************************
     **** This is the Navigation View for the Drawer ****
     ****************************************************
     -->
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/Navigation_View"
        style="@style/Locky.Widget.Custom.NavigationView.Drawer"
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:clipToPadding="false"
        android:fitsSystemWindows="true"
        android:paddingStart="0dp"
        android:paddingEnd="16dp"
        app:headerLayout="@layout/drawer_header"
        app:itemTextAppearance="@style/Locky.Text.Body.Drawer"
        app:menu="@menu/menu_drawer_main" />

</androidx.drawerlayout.widget.DrawerLayout>

</layout>

谁能解决这个问题?

Snackbars should Snackbars should appear above FABs.

最佳解决方案是在您的 Snackbar 中使用 setAnchorView 方法:

                Snackbar.make(
                        view,"....",
                        Snackbar.LENGTH_SHORT
                ).setAnchorView(floatingActionButton).show();