如何在Android中禁用Snackbar和FAB动画的CoordinatorLayout

时间:2015-09-24 12:07:28

标签: android floating-action-button android-coordinatorlayout

CoordinatorLayout来自FloatingActionButton的{​​{1}},我的布局Design Support Library FAB设置为margin_bottom所以我不# 39; t想要' CoordinatorLayout'在出现50dp时更高的FloatingActionButton动画,因为它无论如何都不会被覆盖。

我如何停用SnackBar,以便CoordinatorLayout出现时不会移动FloatingActionButton

这是我的代码:

SnackBar

2 个答案:

答案 0 :(得分:3)

您可以使用自定义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;
    }
}

答案 1 :(得分:0)

如果你真的想要实现这个目标,你可以从协调器布局中删除FAB,然后根本不应该制作动画。