当我单击FAB以显示Snackbar时,Fab处于跳跃状态,而Snackbar隐藏了Fab
我的代码
<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出现
答案 0 :(得分:1)
因为您使用的是CoordinatorLayout
FAB
总是会在snackbar
出现时向上移动。
CoordinatorLayout可以收听所有直接子视图的内容 事件,当发生某些事件(例如,小吃栏弹出)时,它将 还要向上移动浮动按钮。
所以这是自然的行为,因此避免创建自定义行为。 那么,您如何自定义此行为?您定义了自己的Behavior子类,请阅读this教程以了解更多信息。