浮动动作按钮是跳跃的,单击时

时间:2019-05-31 14:12:31

标签: java android xml

当我单击FAB以显示Snackbar时,Fab处于跳跃状态,而Snackbar隐藏了Fab enter image description here

enter image description here

我的代码

<androidx.coordinatorlayout.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    android:id="@+id/main_coordinator_layout">

    <com.google.android.material.bottomappbar.BottomAppBar
        android:id="@+id/bottom_app_bar"
        app:fabAlignmentMode="center"
        android:layout_width = match_parent
        android:layout_height = wrap_content
        android:layout_gravity = bottom
        android:backgroundTint" = @color/colorPrimary
        fabCradleMargin" = 15dp
        fabCradleRoundedCornerRadius = 15dp
        hideOnScroll = true
        layout_scrollFlags = scroll|enterAlways
        buttonGravity = bottom
        app:menu="@menu/menu"/>

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:src="@drawable/ic_plus"
        app:layout_anchor="@id/bottom_app_bar"
        android:layout_width = wrap_content
        android:layout_height = wrap_content
        android:backgroundTint = "@color/colorPrimaryDark"/>

</androidx.coordinatorlayout.widget.CoordinatorLayout>

我尝试了在快餐栏上更改参数视图,但是它不起作用

public void showSnackBar(CoordinatorLayout coordinatorLayout, FloatingActionButton fab, String text) {

    Snackbar snackbar = Snackbar.make(coordinatorLayout, text, Snackbar.LENGTH_SHORT);
    View snackBarView = snackbar.getView();
    CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) snackBarView.getLayoutParams();
    params.setMargins(
            params.leftMargin,
            params.topMargin,
            params.rightMargin,
            params.bottomMargin + 100);
    snackBarView.setLayoutParams(params);
    snackbar.setAnchorView(fab);
    snackbar.show();

}

我该如何解决?这样FAB不会跳或Snackbar出现

1 个答案:

答案 0 :(得分:1)

因为您使用的是CoordinatorLayout FAB总是会在snackbar出现时向上移动。

  

CoordinatorLayout可以收听所有直接子视图的内容   事件,当发生某些事件(例如,小吃栏弹出)时,它将   还要向上移动浮动按钮。

所以这是自然的行为,因此避免创建自定义行为。 那么,您如何自定义此行为?您定义了自己的Behavior子类,请阅读this教程以了解更多信息。