更新到支持库24时,具有自定义布局行为的Quirk

时间:2016-11-05 22:34:34

标签: android android-support-library android-coordinatorlayout

在我工作的最后几个项目中,我总是有一个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中实现此类行为?

Correct behavior with 23.4.0

在下面的gif中,您可以看到没有按钮。当我添加layout_behavior它&#34;失去&#34;它的位置。

Button disappear!!

1 个答案:

答案 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;
    }