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

标签 android floating-action-button android-coordinatorlayout

我有 CoordinatorLayout,它包装了 Design Support Library 中的 FloatingActionButton,在我的布局 FAB 中有 margin_bottom 设置为超过 50dp 所以我不希望 'CoordinatorLayout' 在 SnackBar 出现时将 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;
    }
}

关于android - 如何在 Android 中禁用 Snackbar 和 FAB 动画的 CoordinatorLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32760907/

相关文章:

android - 将 SeekBar 定位在另一个 View 的垂直边缘

Android - 在 Activity 和 Fragment 中使用 CoordinatorLayout

java - 按顺序运行 3 个公共(public)空间(在每个空间完成其任务后)

android - 如何将 View 添加到多行

android @Suppress 错误 vs @TargetApi

java - KitKat FloatingActionButton 有额外的边距

android - CoordinatorLayout.Behavior 未被调用

android - 如何构建 _just_ libwebcore.so 而不是整个 froyo 源

java - 更新到 sdk 版本 23 后,我的应用程序崩溃并出现一些 float 操作按钮错误?

android - 如何使用 CoordinatorLayout 和 LinearLayout 隐藏和显示 App Bar,而不是 recyclerview