Coordonnateur de la mise en page mise en page personnalisée comportement ne jamais avoir appelé
Tout d'abord, je voudrais commencer avec mon manque de connaissances au sujet de la coordonnatrice de la mise en page. Je suis simplement en suivant les tutoriels que j'ai trouvé en ligne et je suis curieux de savoir pourquoi mon comportement n'est pas de travail.
L'enfant de voir à l'intérieur de coordonnateur de la mise en page doivent être de la barre d'application de mise en page?
Ou êtes-vous en mesure de mettre tout point de vue à l'intérieur.
Aussi, au moment de définir les res-automatique de l'espace de noms, il ne me donne pas l'option pour layout_behavior. Généralement android studio sera automatique si une fonction est disponible et il n'a pas. Bien que, si j'ai taper layout_behavior il ne se plaint pas. Alors peut-être que ça fonctionne...?
Peu importe, j'ai défini ma propre mise en page personnalisée comportement et essaie de l'appliquer, mais il ne semble pas fonctionner. Aucune information serait grandement apprécié.
Ici est la mise en page. J'essaye d'appliquer mon comportement personnalisé pour la première LinearLayout (search_polls_toolbar) et le faire défiler vers le haut lorsque la verticale recyclerview défiler vers le haut. (Comme la barre d'outils est actuellement le cas.)
Je dois aussi mentionner ce xml est un fragment dans un viewpager. Et l'activité d'hébergement dispose d'un coordonnateur de la mise en page attaché à ce que la barre de défilement vers le haut. (Pourrait-il être une source de conflit à cause de cela?)
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
android:id="@+id/root"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<LinearLayout
android:id="@+id/search_polls_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:actionBarSize"
android:background="@color/icitizen_toolbar_orange"
android:weightSum="1"
app:layout_behavior="com.example.chrisjohnson.icitizenv2.CustomBehaviors.ToolbarBehavior"
>
<EditText
android:id="@+id/search_polls"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="@string/search_polls"
android:gravity="center_horizontal"
android:layout_weight=".5"
android:drawableLeft="@drawable/magnifying_glass"
android:drawableStart="@drawable/magnifying_glass"
android:layout_marginTop="5dp"
android:layout_marginLeft="15dp"
android:drawablePadding="-50dp"
android:paddingLeft="5dp"
android:paddingTop="5dp"
android:paddingBottom="10dp"
android:cursorVisible="false"
android:textSize="20sp"
android:background="@color/icitizen_light_orange"
/>
</LinearLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/poll_horizontal_recycler_view"
android:layout_width="match_parent"
android:layout_height="75dp"
android:layout_below="@id/search_polls_toolbar"
android:layout_marginLeft="10dp"
android:layout_marginTop="5dp"
android:scrollbars="none"
>
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/poll_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_below="@id/poll_horizontal_recycler_view"
app:layout_scrollFlags="scroll|enterAlways"
android:scrollbars="vertical" />
</RelativeLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/polls_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/white_plus_icon"
android:layout_marginBottom="70dp"
app:backgroundTint="@color/icitizen_orange"
app:layout_anchor="@id/container"
app:layout_anchorGravity="bottom|right|end"
app:borderWidth="0dp"
android:layout_marginRight="15dp"
android:layout_marginEnd="15dp"/>
Et voici le comportement personnalisé:
public class ToolbarBehavior extends CoordinatorLayout.Behavior<Toolbar> {
public ToolbarBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
Toast.makeText(context, "AJSJA", Toast.LENGTH_LONG).show();
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent, Toolbar child, View dependency) {
return dependency instanceof RecyclerView;
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, Toolbar child, View dependency) {
child.setTranslationY(child.getY());
return true;
}
}
Et voici l'hébergement d'activités " mise en page.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/appBarLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:background="?attr/colorPrimary"
app:layout_scrollFlags="scroll|enterAlways"
/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/home_viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
</android.support.design.widget.CoordinatorLayout>
Si quelqu'un souhaite que je poste plus de mon code, s'il vous plaît laissez-moi savoir! Merci 🙂
Vous devez vous connecter pour publier un commentaire.
La raison pourquoi il ne fonctionne pas, c'est que la vue avec
Behavior
doit être un enfant direct deCoordinatorLayout
. Dans votre cas, la hiérarchie est:CoordinatorLayout
->RelativeLayout
->LinearLayout
(avecBehavior
).J'ai une mise en page comme celle-ci. Il y a quelques choses situées dans les régions supérieures, mais le fond ne contient qu'un FAB qui est profondément imbriqués.
La FAB est profondément imbriqués.
CoordinatorLayout > ConstraintLayout > RelativeLayout > FABProgressCircle > FAB
Cependant la
RelativeLayout
doit être poussé à la hausse par leCoordinatorLayout
lorsque leSnackbar
est indiqué.Le comportement qui va faire c'est simple comme suit.
Montrer la
Snackbar
comme ça.onDependentViewRemoved
doit être remplacé, parce que quand manuellement rejetant uneSnackbar
laCoordinatorLayout
ne sera pas déclencher le déplacement de la traduitView
(leFloatingActionButton
et sesRelativeLayout
) retour à son lieu d'origine. Substitution de la méthode, nous pouvons le traduire retour à l'endroit où il était.view.animator()
.