Create dependencies between Views
suggest changeYou can use the CoordinatorLayout.Behavior
to create dependencies between views. You can anchor a View
to another View
by:
- using the
layout_anchor
attribute. - creating a custom
Behavior
and implementing thelayoutDependsOn
method returningtrue
.
For example, in order to create a Behavior
for moving an ImageView
when another one is moved (example Toolbar), perform the following steps:
public class MyBehavior extends CoordinatorLayout.Behavior<ImageView> {...}
- Override the
layoutDependsOn
method returningtrue
. This method is called every time a change occurs to the layout:
@Override
public boolean layoutDependsOn(CoordinatorLayout parent,
ImageView child, View dependency) {
// Returns true to add a dependency.
return dependency instanceof Toolbar;
}
- Whenever the method
layoutDependsOn
returnstrue
the methodonDependentViewChanged
is called:
@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);
}
Found a mistake? Have a question or improvement idea?
Let me know.
Table Of Contents