在视图之间创建依赖关系
你可以使用 CoordinatorLayout.Behavior
在视图之间创建依赖关系。你可以通过以下方式将 View
锚定到另一个 View
:
- 使用
layout_anchor
属性。 - 创建一个自定义
Behavior
并实现layoutDependsOn
方法返回true
。
例如,为了创建 Behavior
以在移动另一个时移动 ImageView
(示例工具栏),请执行以下步骤:
-
创建自定义行为 :
public class MyBehavior extends CoordinatorLayout.Behavior<ImageView> {...}
-
重写
layoutDependsOn
方法返回true
。每次布局发生更改时都会调用此方法:@Override public boolean layoutDependsOn(CoordinatorLayout parent, ImageView child, View dependency) { // Returns true to add a dependency. return dependency instanceof Toolbar; }
-
每当方法
layoutDependsOn
返回true
时,方法onDependentViewChanged
被调用:@Override public boolean onDependentViewChanged(CoordinatorLayout parent, ImageView child, View dependency) { // Implement here animations, translations, or movements; always related to the provided dependency. float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight()); child.setTranslationY(translationY); }