在我工作的最后几个项目中,我总是有一个Button的自定义布局行为,以模仿FloatingButton在显示Snackbar时所做的动画。我使用的代码是:
public class BehaviorButton extends CoordinatorLayout.Behavior<Button> {
public BehaviorButton(Context context, AttributeSet attrs) {}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, Button child, View dependency) {
return dependency instanceof Snackbar.SnackbarLayout;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
return true;
}
}
然后&#34;绑定&#34;这个类通过xml到Button。
app:layout_behavior=".BehaviorButton"
没什么特别的。 问题:当我将支持库从23.4.0更新到24时,此功能消失了。我的问题是:我应该如何在支持库24中实现此类行为?
在下面的gif中,您可以看到没有按钮。当我添加layout_behavior
它&#34;失去&#34;它的位置。
答案 0 :(得分:1)
您需要检查依赖项是否为SnackbarLayout
,然后才转换按钮。
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, Button child, View dependency) {
if(dependency instanceof Snackbar.SnackbarLayout){
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
return true;
}
return false;
}