簡體   English   中英

如何在Android中禁用Snackbar和FAB動畫的CoordinatorLayout

[英]How to disable CoordinatorLayout for Snackbar and FAB animation in Android

我有CoordinatorLayout ,它從Design Support Library包裝FloatingActionButton ,在我的布局中, FAB margin_bottom設置為超過50dp所以當SnackBar出現時,我不希望'CoordinatorLayout'為FloatingActionButton設置更高的動畫,因為它無論如何都不會被覆蓋。

如何禁用CoordinatorLayout以便在SnackBar出現時不會移動FloatingActionButton

這是我的代碼:

Snackbar snack = Snackbar.make(getView(), R.string.you_have_to_be_logged_in, Snackbar.LENGTH_LONG)
                .setAction(R.string.log_in, new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        LogInDialog logInDialog = new LogInDialog();
                        logInDialog.show(ft, "LogInDialog");
                    }
                });

您可以使用自定義CoordinatorLayout.Behavior

public class FloatingActionButtonBehavior extends CoordinatorLayout.Behavior<FloatingActionButton> {
    public FloatingActionButtonBehavior(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
        return !(dependency instanceof Snackbar.SnackbarLayout); // here is key idea
    }

    @Override
    public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton child, View dependency) {
        float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
        child.setTranslationY(translationY);
        return true;
    }
}

好吧,如果你真的想要實現這個目標,你可以從協調器布局中刪除FAB,然后它根本不應該動畫。

暫無
暫無

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

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