2015-11-11 13 views
24

Sono molto nuovo per Android e intendevo postarlo allo Android Developers - Google Groups ma sembrano dire che i neofiti devono pubblicare su Stack Overflow. Quindi sono qui.Inserimento del contenuto sotto AppBarLayout in un CoordinatorLayout

Ho scaricato la versione più recente di Android Studio 1.4.1 ieri, e ho seguito le istruzioni su Building Your First App. Ho fatto tutto fino a Starting Another Activity. Sembra che queste istruzioni siano un po 'vecchie, ad esempio per una versione precedente dell'SDK, perché non fanno riferimento a CoordinatorLayout e AppBarLayout sebbene compaiano nel codice se si seguono i passaggi. Ovviamente, ho apportato piccole modifiche al codice per far funzionare questa app, ma non completamente.

mio problema: Se si guardano le immagini in fondo Starting Another Activity vedrete che entrambi hanno il titolo la mia prima applicazione. Nelle mie modifiche del codice, non ho potuto ottenere questo titolo su entrambe le immagini/schermi. (Devo dire che voglio utilizzare la versione più recente di AppBarLayout e CoordinatorLayout) si concentrano

di lasciare che sulla prima schermata, la activity_my.xml è

<?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" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MyActivity"> 

<include layout="@layout/content_my" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

Come accennato in fondo Building a Simple User Interface del content_my.xml sembra che:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" > 

<EditText android:id="@+id/edit_message" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage"/> 
</LinearLayout> 

c'è qualche cosa, posso aggiungere il AppBarLayout al activity_my.xml. Ho provato qualcosa di simile:

<?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" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context=".MyActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

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


<include layout="@layout/content_my" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

Il problema di questo è che il contenuto in content_my.xml va dietro la Toolbar di AppBarLayout piuttosto che sotto. Qualche idea su come risolvere questo problema?

+0

Mi dispiace, potresti fare tldr? – deadfish

+1

Questo sembra essere 2 domande separate, come per il primo, per ottenere il titolo dell'app nella barra degli strumenti assicuratevi di chiamare 'setSupportActionBar (barra degli strumenti)' dove 'toolbar' è un riferimento alla vostra vista Toolbar. Inoltre, il motivo per cui "CoordinatorLayout" e "AppBarLayout" sono referenziati, è dovuto al fatto che nelle precedenti versioni di Android Studio "l'attività vuota" creava un'attività completamente vuota. Ora crea un layout semplice con questi 2 elementi. La nuova opzione è denominata "Attività vuota". – Orbit

risposta

63

I layout in un CoordinatorLayout devono definire un layout_behavior. Cambia il tuo contenuto a questo:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
> 

<EditText android:id="@+id/edit_message" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage"/> 
</LinearLayout> 
+0

Perfetto! Grazie mille. So che questo può sembrare stupido, ma ho provato a google 'app: layout_behavior =" @ string/appbar_scrolling_view_behavior "' e non sono riuscito a trovare alcuna documentazione su di esso. Sarei grato a qualcuno di pubblicare l'URL dove questo è documentato. –

+1

@ O.O. non è affatto stupido. Ho cercato di trovare l'articolo originale in cui menzionava questo e non posso. Prova a cercare "Esempio di CoordinatorLayout" per maggiori dettagli. –

+0

Grazie ** Cory ** Sono nuovo ad Android e non sembra essere ben documentato. Credo di aver bisogno di capire questo. Grazie ancora. –

Problemi correlati