ho incontrato uno strano problema con il nuovo Android Supporto alla progettazione Librar (http://android-developers.blogspot.com.ar/2015/05/android-design-support-library.html). Se metto un contenuto aggiuntivo (come un LinearLayout) in un AppBarLayout insieme alla barra degli strumenti e attiva la visibilità di quel contenuto, i frammenti di commutazione mostreranno uno spazio morto nella parte superiore del contenuto del frammento.commutando viste visibilità AppBarLayout provoca problemi di spaziatura per frammenti caricati
Sembra che AppBarLayout non ridimensiona correttamente CoordinatorLayout padre quando viene attivata la visibilità del contenuto. Ho il mio CoordinatorLayout avvolto nel DrawerLayout. Voglio alternare la visibilità del LinearLayout extra in AppBarLayout a seconda del frammento mostrato.
Ecco il mio file main.xml per il MainActivity:
<android.support.v4.widget.DrawerLayout
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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<android.support.design.widget.CoordinatorLayout
android:layout_height="match_parent"
android:layout_width="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="?attr/actionBarSize"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_vertical"">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="start"
android:text="Hello"/>
</LinearLayout>
</android.support.design.widget.AppBarLayout>
<FrameLayout
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</android.support.design.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Questo è un problema con la libreria di supporto alla progettazione. È stato segnalato e contrassegnato come una versione futura, mi dispiace non ho trovato il link al numero – Aashir
Ci deve essere un modo per forzare un ridisegno. Se si ruota la vista, la spaziatura è fissa. Sembra una condizione di gara. O forse è possibile spostare l'AppBarLayout nel frammento per evitare il problema. Mi piacerebbe vedere il bug report originale per vedere se offre una soluzione. – ThanksMister
Una possibile soluzione che sembra funzionare è aggiungere tutto in CoordinatorLayout al frammento e aggiungere/rimuovere contenuto dall'AppBarLayout come necessario per ciascun frammento. Dovresti ottenere un riferimento alla barra degli strumenti per aggiungere il menu dell'hamburger, aggiungere voci di menu o aggiornare il titolo. – ThanksMister