簡體   English   中英

點擊它時,浮動動作按鈕就會跳躍

[英]Floating action button is jump, when click on it

當我點擊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>

我嘗試在快餐欄上更改params視圖,但它不起作用

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出現了

因為您正在使用CoordinatorLayout FAB將在snackbar出現時始終向上移動。

CoordinatorLayout可以監聽所有直接子視圖的事件,當發生某些事件(如快餐欄彈出)時,它也會移動浮動按鈕。

所以這是一種自然行為,所以要避免你應該創建一個自定義行為。 那么,你如何自定義這種行為? 您可以定義自己的Behavior子類,請閱讀教程以獲取更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM