6

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

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

+0

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

+0

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

risposta

1

Ho avuto un problema simile con il widget di supporto alla progettazione. Ho avuto un CoordinatorLayout all'interno di DrawerLayout e AppBarLayout all'interno di CoordinatorLayout. Ho avuto due barre degli strumenti all'interno di AppBarLayout. Il mio obiettivo era quello di visualizzare una barra degli strumenti con un ViewPager che visualizza un contenuto di recyclerview. Volevo scorrere tra le barre degli strumenti quando si selezionano gli elementi. In altre parole, ho creato una barra degli strumenti GONE mentre l'altra era visibile e viceversa. Scorrere il contenuto verso l'alto spingerebbe la barra degli strumenti verso l'alto nella parte superiore dello schermo. Tutto ha funzionato perfettamente, tranne che il cambiamento di orientamento mostrerebbe uno spazio per la barra degli strumenti che dovrebbe essere sparita. Ho provato ogni trucco a cui potevo pensare per sbarazzarmene ma non ci è riuscito. Poi ho trovato questo post e ho capito che si trattava di un bug nella libreria di supporto. Ho quindi provato a mettere un FrameLayout in AppBarLayout e quindi inserire le due barre degli strumenti all'interno di FrameLayout e NON PIÙ SPAZIO! tutto ora funziona come ho intenzione di farlo funzionare. Le barre degli strumenti GONE sono GONE e mostra solo la barra degli strumenti visibile, anche quando si cambia l'orientamento.

Spero che questo aiuti qualcuno.

Problemi correlati