2015-06-19 16 views
9

È la prima volta che utilizzo CoordinatorLayout e non capisco come funziona.LinearLayout overlapping Support CoordinatorLayout

mio LinearLayout si sovrappone la mia barra degli strumenti, come se fossi in un FrameLayout o RelativeLayout, e non so come dire che andare sotto (come Android: layout_below con RelativeLayout)

Qui è la mia codice:

<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> 

un altro dubbio: Quasi tutti gli esempi che ho visto erano con CoordinateLayout gestione RecyclerView. My Layout non è un RecyclerView, solo un modulo molto lungo. Ha senso farlo in questo modo?

+0

Il tag di chiusura è interrotto perché non ce n'è uno aperto – pskink

+0

upps il mio errore che incolla il codice! Risolto il problema –

risposta

10

Provare ad annidare i contenuti all'interno di NestedScrollView. Non dimenticare di includere il tag 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> 

risorse aggiuntive: http://developer.android.com/reference/android/support/design/widget/AppBarLayout.html

+0

perché se ti dimentichi di fare l'onnipotente 'layout_behavior' avrai un momento difficile capire perché la tua barra delle azioni va sotto la visualizzazione a scorrimento, non importa cosa. Sono felice di aver trovato questa soluzione, ancora più felice che ora 'Errore nella classe di inflazione android.support.v7.widget.AppCompatSpinner' è dietro di me (non osare passare un colore semi opaco al suo background). Ora dovrei tornare a capire perché la maggior parte delle mie visualizzazioni di testo raccolgono il tema/attributo textColor specifico mentre due di esse non lo fanno. Gee ...Mi mancano davvero i buoni giorni di Android quando non c'era materiale e supporto follia – kellogs

-2

Da developer.android.com

"CoordinatorLayout è un super-alimentato FrameLayout CoordinatorLayout è destinato per due casi di utilizzo principali:. LE PRIME -level application decoro o layout cromato Come contenitore per una specifica interazione con una o più viste figlio Specificando Comportamenti per le viste secondarie di un Coo rdinatorLayout puoi fornire molte diverse interazioni all'interno di un singolo genitore e quelle viste possono anche interagire l'una con l'altra. Le classi di vista possono specificare un comportamento predefinito quando vengono utilizzate come figlio di un CoordinatorLayout utilizzando l'annotazione DefaultBehavior. I comportamenti possono essere utilizzati per implementare una varietà di interazioni e modifiche aggiuntive del layout che vanno da cassetti scorrevoli e pannelli a elementi trascinabili e pulsanti che si attaccano ad altri elementi mentre si muovono e si animano. I bambini di un CoordinatorLayout possono avere un'ancora. Questo ID vista deve corrispondere a un discendente arbitrario di CoordinatorLayout, ma potrebbe non essere il bambino ancorato stesso o un discendente del bambino ancorato. Questo può essere usato per posizionare le viste relative ad altri riquadri contenuti arbitrari galleggiante."

Quindi, è possibile modificare la visualizzazione radice LinearLayout (orientamento verticale) oppure utilizzare ScrollView, che disporre i bambini linearmente.

+3

Questa non è una risposta reale, puoi citare questo, ma non stai affatto aiutando lui e la comunità. – Leonardo

0

risposta in ritardo, ma potrebbe ancora aiutare qualcuno.

racchiudere tutti gli chidren di CoordinatorLayout in un orientamento verticale LinearLayout, .
ha funzionato per me.

Problemi correlati