38

我正在使用这个库来实现一个浮动操作栏,当屏幕上出现一个快餐栏时,我似乎找不到移动按钮的方法。那个图书馆甚至有可能吗?

4

5 回答 5

51

对于任何在未来寻找答案的人..

Coordinator Layout 用作 Floating Action Button 的 Parent Layout 将自动为您处理动画效果。

浮动操作按钮有一个默认行为,它检测添加的 Snackbar 视图并相应地在 Snackbar 的高度上方为按钮设置动画。

浮动操作按钮行为

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/clayout">
<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab_btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|right"
    android:layout_marginBottom="16dp"
    android:layout_marginRight="16dp"
    android:src="@drawable/filter_icon"
    app:rippleColor="@color/colorGray"
    app:fabSize="normal"
    app:borderWidth="0dp"/>
</android.support.design.widget.CoordinatorLayout>

然后我们的 SnackBar 代码将使用 Coordinatorlayout[here layout] 作为父布局,如下所示:

Snackbar.make(clayout, "Click on row to know more details", Snackbar.LENGTH_LONG)
                    .setAction("OK", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                        }
                    }).show();
于 2015-09-25T08:06:32.630 回答
10

尝试使用android.support.design.widget.FloatingActionButtonCoordinatorLayout

然后试试这个:

fabView = findViewById(R.id.floating_action_button_id);
Snackbar.make(fabView, "Hi", Snackbar.LENGTH_LONG).show()
于 2015-06-25T08:44:14.170 回答
7

您可以切换到android.support.design.widget.FloatingActionButton并使用CoordinatorLayout为您的视图指定行为。

CoordinatorLayout 是一个超级强大的 FrameLayout。

CoordinatorLayout 适用于两个主要用例:

  1. 作为顶级应用程序装饰或 chrome 布局
  2. 作为与一个或多个子视图进行特定交互的容器

通过为 CoordinatorLayout 的子视图指定行为,您可以在单个父视图中提供许多不同的交互,并且这些视图也可以相互交互。当使用 DefaultBehavior 注释作为 CoordinatorLayout 的子级时,视图类可以指定默认行为。

行为可用于实现各种交互和其他布局修改,从滑动抽屉和面板到滑动可关闭元素和按钮,这些元素在移动和动画时会粘在其他元素上。

CoordinatorLayout 的子项可能有一个锚点。此视图 id 必须对应于 CoordinatorLayout 的任意后代,但它可能不是锚定子本身或锚定子的后代。这可用于相对于其他任意内容窗格放置浮动视图。

于 2015-06-08T06:36:48.063 回答
4

科特林:

class CustomBehavior : CoordinatorLayout.Behavior<FloatingActionButton> {   

....

    override fun onAttachedToLayoutParams(params: CoordinatorLayout.LayoutParams) {
        super.onAttachedToLayoutParams(params)

        //set dodgeInsetEdges to BOTTOM so that we dodge any Snackbars
        params.dodgeInsetEdges = Gravity.BOTTOM
    }

.....

}
于 2018-03-15T11:06:01.507 回答
2

您可以使用设置 parentLayout - 作为 FAB,

Snackbar.make(parentLayout, R.string.snackbar_text,Snackbar.LENGTH_LONG).setAction(R.string.snackbar_action, myOnClickListener).show();
于 2015-09-04T12:55:13.550 回答