在CoordinatorLayout中使用第三方FloatingActionButton库

7
我正在尝试使用 futuresimple的FloatingActionButtonCoordinatorLayout中使用FloatingActionMenu,这样当我显示Snackbar时,FAB将向上移动,而不会被Snackbar遮挡。 FloatingActionMenu完美地工作,但我注意到第三方库不能在CoordinatorLayout内工作。

当我使用来自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类中,我使用以下代码初始化我的FloatingActionsMenu:

FloatingActionsMenu famView = (FloatingActionsMenu) getActivity().findViewById(R.id.famMain);

然后我将它设置为我的Snackbar与
Snackbar.make(famView, "Hover text copied to clipboard", Snackbar.LENGTH_SHORT).show();
1个回答

9
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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接