【问题标题】:Quirk with custom Layout Behavior when updating to Support Library 24更新到支持库时自定义布局行为的怪癖 24
【发布时间】:2016-11-05 22:34:33
【问题描述】:

在我从事的最后几个项目中,我总是有一个自定义布局行为,用于 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;
    }
}

然后通过xml把这个类“绑定”到Button上。

app:layout_behavior=".BehaviorButton"

没什么特别的。 问题:当我将支持库从 23.4.0 更新到 24 时,此功能消失了。我的问题是:我应该如何在支持库 24 中实现这种行为?

在下面的 gif 中,您可以看到没有按钮。当我添加 layout_behavior 时,它“失去”了它的位置。

【问题讨论】:

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


    【解决方案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;
        }
    

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多