9
votes

Linearlayout Coordonnateur de support qui se chevauche

C'est la première fois que j'utilise coordinatorlayout, et je ne comprends pas vraiment comment cela fonctionne.

My linearlayout se chevauche ma barre d'outils, comme si j'étais dans une framayout ou relativenifayout, et je ne sais pas comment Pour le dire d'aller ci-dessous (comme Android: Layout_below avec relativationAjouTout) P>

Voici mon code: P>

<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/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="192dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:fitsSystemWindows="true"
                android:src="@drawable/logo2"
                app:layout_collapseMode="pin" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                app:layout_collapseMode="pin"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>
    </android.support.design.widget.AppBarLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/appbar"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin">

            .... Very Large Form ...
    </LinearLayout>
</android.support.design.widget.CoordinatorLayout>


2 commentaires

La fermeture est cassée car il n'y a pas d'ouverture


UPPS Mon code de collision! Fixé


4 Réponses :


10
votes

Essayez de nidifier votre contenu à l'intérieur d'une NESTCrollView. N'oubliez pas d'inclure la balise XML Layout_Behavior.

 <android.support.v4.widget.NestedScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         app:layout_behavior="@string/appbar_scrolling_view_behavior">

     <!-- Your scrolling content -->

 </android.support.v4.widget.NestedScrollView>


1 commentaires

Parce que si vous oubliez faire le tout-puissant layout_behavior Vous allez avoir une période difficile à comprendre pourquoi votre barre d'action est-elle sous la vue de défilement, quoi que ce soit. Je suis heureux que j'ai trouvé cette solution, encore plus heureux que maintenant error gonflant la classe android.support.v7.widget.appcompatspinner est derrière moi (n'osez pas passer une couleur semi-opaque à son arrière-plan). Maintenant, je devrais revenir à la recherche de la raison pour laquelle la plupart de mes vues de texte décrocheront l'attribut TextColor sur le thème / spécifique, tandis que deux d'entre elles ne le feront pas. Gee ... les bons jours d'Android manquent vraiment quand il n'y avait pas de matériau et de soutien de la folie



-2
votes

de développeur.android.com

"CoordinatorLayout est un Framelayout super-alimenté. CoordinatorLayout est destiné à deux cas d'utilisation principale: Comme un décor d'application de haut niveau ou une mise en page chrome En tant que conteneur pour une interaction spécifique avec une ou plusieurs vues d'enfants En spécifiant les comportements pour les vues d'enfants d'une coordinatrice, vous pouvez fournir de nombreuses interactions différentes au sein d'un parent unique et ces vues peuvent également interagir les unes avec les autres. Afficher les classes peut spécifier un comportement par défaut lorsqu'il est utilisé comme enfant d'une coordinatriceLayout à l'aide de l'annotation Behavior par défaut. Les comportements peuvent être utilisés pour mettre en œuvre une variété d'interactions et de modifications de présentation supplémentaires allant des tiroirs glissants et des panneaux à des éléments et des boutons renvoyés par balayage et des boutons qui collent à d'autres éléments lorsqu'ils bougent et animent. Les enfants d'une coordinatrice peuvent avoir une ancre. Cet identifiant de vue doit correspondre à un descendant arbitraire de la coordinatriceLayout, mais ce n'est peut-être pas l'enfant ancré lui-même ou un descendant de l'enfant ancré. Cela peut être utilisé pour placer des vues flottantes par rapport à d'autres vitres de contenu arbitraires. "

Donc, vous pouvez modifier la vue racine de linearlayout (orientation verticale) ou utiliser ScrollView, qui organiserait les enfants linéairement.


1 commentaires

Ce n'est pas une vraie réponse, vous pouvez citer cela, mais vous ne l'aidez pas du tout et la communauté.



0
votes

réponse tardive, mais cela pourrait toujours aider quelqu'un.

enfermer tous les Chidren de coordinatorlayout dans un linearlayout , orientation verticale .
Cela a fonctionné pour moi.


0 commentaires

2
votes

J'ai trouvé une solution. Je suppose que ce n'est pas la meilleure solution là-bas, mais tout semble bien et que cela nous permet de continuer avec les animations de CoordinatorLayout.

Je viens de définir le marginttop et marginbot du fragment sur le même DPS que la barre d'outils sur le dessus et que la barre de NAV inférieure a.

dans mon cas, ma barre d'outils et ma barre NAVBAR ont "? ATTR / ActionBarsize" Hauteur. Donc je viens de régler les marges supérieure et bot de mon fragment sur "? Attr / Actionbarsize"

Encore une fois, ce n'est pas aussi bon que d'utiliser une mise en page linéaire ou relatif, mais j'ai peur si nous avons choisi cette solution que nous avons choisi cette solution déchets des animations de CoordinatorLayout.

sur la barre d'outils et la barre d'outils: xxx

et dans mon fragment: xxx


0 commentaires