CoordinatorLayout 中的第三方 FloatingActionButton 库

Third Party FloatingActionButton Library in CoordinatorLayout

我正在尝试使用 futuresimple's FloatingActionButton libraryCoordinatorLayout 中使用 FloatingActionMenu 所以当我显示 Snackbar 时,FAB 将向上移动并且不会被隐藏Snackbar。尽管我注意到第三方库在 CoordinatorLayout 中不工作,但 FloatingActionMenu 工作正常。

当我使用来自 Google 的支持库 FAB 时,CoordinatorLayout 按预期工作,尽管 FutureSimple 的库不是。 (它被 Snackbar 隐藏了)。

如何让第三方库与 CoordinatorLayout 一起工作?

fragment_comic.xml

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:text="@string/default_title"
    android:textAppearance="?android:textAppearanceLarge"
    android:layout_centerHorizontal="true" />

<TextView
    android:id="@+id/alt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/title"
    android:layout_centerHorizontal="true"
    android:layout_gravity="center_horizontal"
    android:fadeScrollbars="false"
    android:gravity="center"
    android:maxLines="4"
    android:textColor="@color/black"
    android:paddingBottom="13dp"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:scrollbars="vertical"
    android:text="@string/default_alt"
    android:textAppearance="?android:textAppearanceMedium" />

<ImageView
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/alt"
    android:adjustViewBounds="false"
    android:layout_marginBottom="10dp"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:scaleType="fitCenter" />


</RelativeLayout>

<com.getbase.floatingactionbutton.FloatingActionsMenu
    android:id="@+id/famMain"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fab:fab_addButtonColorNormal="@color/material_orange"
    fab:fab_addButtonSize="normal"
    fab:fab_addButtonStrokeVisible="true"
    fab:fab_expandDirection="up"
    android:layout_gravity="bottom|end">

<com.getbase.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab_random"
    android:src="@drawable/ic_random"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fab:fab_colorNormal="@color/material_orange"
    fab:fab_size="mini"/>

<com.getbase.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab_download"
    android:src="@drawable/ic_download"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fab:fab_colorNormal="@color/material_orange"
    fab:fab_size="mini"/>

<com.getbase.floatingactionbutton.FloatingActionButton
    android:id="@+id/fab_browser"
    android:src="@drawable/ic_open_browser"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    fab:fab_colorNormal="@color/material_orange"
    fab:fab_size="mini"/>

</com.getbase.floatingactionbutton.FloatingActionsMenu>

然后在我的 Java class 中,我使用

启动我的 FloatingActionsMenu
FloatingActionsMenu famView = (FloatingActionsMenu) getActivity().findViewById(R.id.famMain);

然后我用

将它设置到我的 Snackbar
Snackbar.make(famView, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show();

Snackbar 覆盖 FloatingActionMenu 的原因是因为您将其设置为 Snackbar 的视图:

Snackbar.make(famView, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show();

您真正需要做的是在您的布局底部添加一个 CoordinatorLayout,用于显示 Snackbar。您可以以 LinearLayout 方式设置它,使其显示在其他所有内容下方。这是您的 XML:

的编辑版本
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.CoordinatorLayout
        xmlns:fab="http://schemas.android.com/apk/res-auto"
        android:id="@+id/coordinatorLayout"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="1">

        <RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <TextView
                android:id="@+id/title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:text="Test"
                android:textAppearance="?android:textAppearanceLarge"
                android:layout_centerHorizontal="true" />

            <TextView
                android:id="@+id/alt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/title"
                android:layout_centerHorizontal="true"
                android:layout_gravity="center_horizontal"
                android:fadeScrollbars="false"
                android:gravity="center"
                android:maxLines="4"
                android:textColor="@android:color/black"
                android:paddingBottom="13dp"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:scrollbars="vertical"
                android:text="Test Alt"
                android:textAppearance="?android:textAppearanceMedium" />

            <ImageView
                android:id="@+id/imageView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/alt"
                android:adjustViewBounds="false"
                android:layout_marginBottom="10dp"
                android:paddingLeft="@dimen/activity_horizontal_margin"
                android:paddingRight="@dimen/activity_horizontal_margin"
                android:scaleType="fitCenter" />


        </RelativeLayout>

        <com.getbase.floatingactionbutton.FloatingActionsMenu
            android:id="@+id/famMain"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            fab:fab_addButtonColorNormal="@android:color/black"
            fab:fab_addButtonSize="normal"
            fab:fab_addButtonStrokeVisible="true"
            fab:fab_expandDirection="up"
            android:layout_gravity="bottom|end">

            <com.getbase.floatingactionbutton.FloatingActionButton
                android:id="@+id/fab_random"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                fab:fab_colorNormal="@android:color/black"
                fab:fab_size="mini"/>

            <com.getbase.floatingactionbutton.FloatingActionButton
                android:id="@+id/fab_download"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                fab:fab_colorNormal="@android:color/black"
                fab:fab_size="mini"/>

            <com.getbase.floatingactionbutton.FloatingActionButton
                android:id="@+id/fab_browser"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                fab:fab_colorNormal="@android:color/black"
                fab:fab_size="mini"/>

        </com.getbase.floatingactionbutton.FloatingActionsMenu>

        <android.support.design.widget.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/testFAB"
            android:layout_gravity="bottom|start"/>

    </android.support.design.widget.CoordinatorLayout>

    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/snackbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

然后,你可以得到像这样的 snackbar 视图:

CoordinatorLayout snackbar = (CoordinatorLayout) findViewById(R.id.snackbar);

然后像这样:

Snackbar.make(snackbar, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show();