CoordinatorLayout 中的第三方 FloatingActionButton 库
Third Party FloatingActionButton Library in CoordinatorLayout
我正在尝试使用 futuresimple's FloatingActionButton
library 在 CoordinatorLayout
中使用 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();
我正在尝试使用 futuresimple's FloatingActionButton
library 在 CoordinatorLayout
中使用 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 中,我使用
启动我的 FloatingActionsMenuFloatingActionsMenu famView = (FloatingActionsMenu) getActivity().findViewById(R.id.famMain);
然后我用
将它设置到我的 SnackbarSnackbar.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();