上下移动浮动操作按钮以避免被快餐栏阻挡

naj*_*aja 33 android floating floating-action-button

我正在使用这个库实现一个浮动操作栏,当屏幕上出现小吃栏时,我似乎无法找到移动按钮的方法.这个图书馆甚至可以吗?

Pun*_*itD 43

对于未来寻找答案的人

用作浮动操作按钮的父布局的协调器布局将自动为您处理动画效果.

浮动操作按钮具有默认行为,可检测添加的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>
Run Code Online (Sandbox Code Playgroud)

然后我们的SnackBar代码将使用Coordinatorlayout [here clayout]作为parentlayout,如下所示:

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();
Run Code Online (Sandbox Code Playgroud)

  • 但不适用于自定义浮动操作按钮或菜单.所以动画必须是手动完成的 (3认同)

Cod*_*ody 9

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

然后尝试这个:

fabView = findViewById(R.id.floating_action_button_id);
Snackbar.make(fabView, "Hi", Snackbar.LENGTH_LONG).show()
Run Code Online (Sandbox Code Playgroud)

  • 协调布局应该有浮动按钮作为直接子... ....记得' (10认同)

Rus*_*nov 7

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

CoordinatorLayout是一个超级动力的FrameLayout.

CoordinatorLayout用于两个主要用例:

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

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

行为可用于实现各种交互和附加布局修改,范围从滑动抽屉和面板到滑动可忽略元素和按钮,当它们移动和动画时粘附到其他元素.

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