如何在 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");
}
});
好吧,如果你真的想实现这个目标,你可以从 Coordinator Layout 中删除 FAB,这样它就根本不应该有动画了。
您可以使用自定义 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;
}
}
我有 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");
}
});
好吧,如果你真的想实现这个目标,你可以从 Coordinator Layout 中删除 FAB,这样它就根本不应该有动画了。
您可以使用自定义 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;
}
}