Je souhaite implémenter un comportement personnalisé sur LinearLayout. Ce est la structure de mon xml:Comportement personnalisé de CoordinatorLayout avec LinearLayout en tant qu'enfant
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout.../>
<android.support.v4.widget.DrawerLayout.../>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_behavior="com.xxx.BottomBarBehavior"
android:layout_gravity="bottom|center_horizontal".../>
</android.support.design.widget.CoordinatorLayout>
Le LinearLayout est à l'intérieur CoordinatorLayout, en dessous du DrawerLayout. Le LinearLayout ne remonte pas lorsque le snack est affiché. Je ne peux tout simplement pas comprendre. La disposition est telle que DrawerLayout contient un ViewPager et ce viewPager est rempli par un autre xml par un fragment. Et le snackbar est généré par un élément dans le recyclerView de ce fragment.
Voici comment ma classe de comportement BottomBarBehavior personnalisé ressemble à:
public class BottomBarBehavior extends CoordinatorLayout.Behavior<LinearLayout> {
public BottomBarBehavior(Context context, AttributeSet attrs) {}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, LinearLayout child, View dependency) {
return (dependency instanceof Snackbar.SnackbarLayout) ||
(dependency instanceof DrawerLayout);
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, LinearLayout child, View dependency) {
if(dependency instanceof Snackbar.SnackbarLayout) {
float translationY = Math.min(0, dependency.getTranslationY() - dependency.getHeight());
child.setTranslationY(translationY);
}
return true;
}
}
Nettoyez et reconstruisez le projet. Votre 'layoutDependsOn' n'a rien à voir avec' ClassCastException'. Vérifiez si cela se produit à nouveau. –
Cela a fonctionné! Mais mon comportement n'est toujours pas suivi par LinearLayout. – Sid
Quelle instance de CoordinatorLayout passez-vous à l'appel make() de votre Snackbar? – colithium