我有 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/