[英]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");
}
});
您可以使用自定義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;
}
}
好吧,如果你真的想要實現這個目標,你可以從協調器布局中刪除FAB,然后它根本不應該動畫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.