【问题标题】:How to disable CoordinatorLayout for Snackbar and FAB animation in Android如何在 Android 中禁用 Snackbar 和 FAB 动画的 CoordinatorLayout
【发布时间】:2015-12-22 00:43:54
【问题描述】:

我有CoordinatorLayout,它从Design Support Library 包装了FloatingActionButton,在我的布局中FABmargin_bottom 设置为超过50dp,所以我不希望'CoordinatorLayout' 为FloatingActionButton 设置更高的动画当SnackBar 出现时,因为无论如何它都不会被覆盖。

我如何禁用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");
                    }
                });

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 你是在 FloatingActionButton 还是在 CoordinatorLayout 中使用这个 Behavior?
    • 对于任何想知道在哪里设置此自定义行为的人,您可以将其设置为 FloatingActionButton 的 app:layout_behavior 属性。
    【解决方案2】:

    如果你真的想实现这个目标,你可以从 Coordinator Layout 中删除 FAB,然后它根本不应该有动画。

    【讨论】:

    • 我的自定义 ScrollingFabBehavior 需要 CoordinatorLayout
    • 如何把它放在CoordinatorLayout之外?该元素被视为根元素,根元素之外的任何内容对 Android Studio 无效
    猜你喜欢
    • 1970-01-01
    • 2019-09-29
    • 2022-10-19
    • 2015-11-17
    • 1970-01-01
    • 2017-10-03
    • 2019-05-25
    • 2017-03-13
    • 2016-07-29
    相关资源
    最近更新 更多