9

Sto utilizzando il layout di seguito, Il CoordinatorLayout tiene al suo interno AppBarLayout (Con Toolbar e TabLayout al suo interno) e un segnaposto RelativeLayout, così ho potuto aggiungere e sostituire i frammenti su di esso.CoordinatorLayout con Toolbar e frammento

Sto riscontrando errori di margine, i frammenti che aggiungo su RelativeLayout si espandono sempre oltre la parte inferiore dello schermo (nella quantità simile alla dimensione dell'altezza AppBarLayout), ho provato a impostare l'altezza a wrap_content e match_parent, in entrambi i casi va in mare.

se rimuovo app:layout_behavior="@string/appbar_scrolling_view_behavior" da RelativeLayout la parte superiore di esso sarà sotto il AppBarLayout che non è anche il risultato desiderato.

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/drawer_layout" 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
android:fitsSystemWindows="true"> 

    <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="wrap_content" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light" 
       app:layout_scrollFlags="scroll|enterAlways" /> 

      <android.support.design.widget.TabLayout 
       android:id="@+id/tabs" 
       app:tabIndicatorHeight="4dp" 
       app:tabIndicatorColor="#ffffff" 
       app:tabMode="scrollable" 
       android:visibility="gone" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" /> 

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


     <RelativeLayout 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      android:id="@+id/main_fragment_container" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 


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


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

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_height="match_parent" 
    android:layout_width="wrap_content" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    app:headerLayout="@layout/nav_header" 
    app:menu="@menu/drawer_view"/> 

</android.support.v4.widget.DrawerLayout> 
+0

Puoi fare un esempio migliore? Quel 'RelativeLayout' non fa nulla e ha un'altezza tecnicamente' 0' a causa di 'wrap_content' a meno che tu non stia facendo qualcosa con esso a livello di programmazione. Se vuoi usarlo come 'containter', usa un' FrameLayout'. –

+0

Inserisco un frammento su di esso, eseguo una transazione di frammento e fornisco l'id di RelativeLayout, ho anche provato a utilizzare FrameLayout stesso risultato. – Calc

+0

È ovvio che tu l'abbia preso dall'esempio di Chris Banes: https://github.com/chrisbanes/cheesesquare/blob/master/app/src/main/res/layout/include_list_viewpager.xml. Si noti che il suo 'ViewPager' usa' match_parent'? –

risposta

0

Il problema è stato risolto aggiornando la libreria recyclerview (a com.android.support:recyclerview-v7:22.2.0)

Il frammento ero loading aveva un recyclerview in esso.

2

Si vedrà anche questo problema se si dispone di una ScrollView all'interno del frammento. Quindi, assicurarsi di utilizzare un NestedScrollView invece:

<android.support.v4.widget.NestedScrollView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
+0

Che dire di LinearLayout? Sto avendo un problema simile con esso. – Calc

+0

Puoi avvolgerlo in un NestedScrollView? – bkurzius

3

ho capito il problema nel mostrare frammento di sotto della barra degli strumenti quando si utilizza il layout di coordinatore. Il problema nel mio caso è:

In this image it shows the Fragment is overlapped by Toolbar.

Ora basta mettere l'AppBarLayout e FrameLayout all'interno LinearLayout come qui di seguito,

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

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

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       android:background="?attr/colorPrimary" 
       app:layout_scrollFlags="scroll|enterAlways"/> 

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

     <FrameLayout 
      android:id="@+id/frame_container" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"/> 
    </LinearLayout> 

Ora il problema è risolto. E sarà così.

The final image.

+0

'AppBarLayout' dovrebbe essere un figlio diretto di un' CoordinatorLayout'. Vedi: http://developer.android.com/reference/android/support/design/widget/AppBarLayout.html – Orbit

1

avuto lo stesso problema. La modifica di RelativeLayout a FrameLayout con il parametro app:layout_behavior="@string/appbar_scrolling_view_behavior" ha risolto il problema.

<FrameLayout 
    android:id="@+id/main_fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
Problemi correlati