6

mio XML Activity èNasconde la barra degli strumenti in attività scorrendo una riciclabilità all'interno del frammento?

<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" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

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

     <android.support.design.widget.AppBarLayout 
      android:id="@+id/appbar" 
      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" 
       android:background="@color/colorPrimary" 
       android:title="@string/app_name" 
       app:layout_scrollFlags="scroll|enterAlways"/> 
     </android.support.design.widget.AppBarLayout> 

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

    </LinearLayout> 


    <android.support.design.widget.NavigationView 
     android:id="@+id/drawerNavigationView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:itemTextColor="@color/navview_text_color" 
     app:menu="@menu/home_drawer_items_menu"/> 
</android.support.v4.widget.DrawerLayout> 

mio frammento XML è:

<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    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.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:layout_scrollFlags="scroll|enterAlways"/> 

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

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/black" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:clickable="true" 
     android:src="@drawable/ic_plus" 
     android:tint="@android:color/white" 
     app:elevation="5dp" 
     app:layout_anchor="@id/viewPager" 
     app:layout_anchorGravity="bottom|right|end"/> 
</android.support.design.widget.CoordinatorLayout> 

mio fragment utilizza tabs e nested fragments all'interno del ViewPager e la mia activity usa navigation drawer quindi non posso spostare la tabs a activity poiché le schede sono necessarie solo per questo specifico fragment. E altri frammenti hanno solo bisogno di un toolbar. Allo stesso tempo tutti i frammenti devono accedere allo navigation drawer.

Ora quello che voglio fare è in qualche modo associare app:layout_scrollFlags="scroll|enterAlways" con la barra degli strumenti della mia attività. In modo che ogni volta che si scorre il mio RecyclerView all'interno del fragment il toolbar dell'attività viene nascosto.

Sarebbe bello se voi ragazzi potete indicarmi la giusta direzione o aiutarmi a capire come farlo?

+1

Questa libreria potrebbe essere in grado di aiutarti: https: // github.com/ksoichiro/Android-ObservableScrollView –

+0

@ Ben-J grazie per la libreria sembra essere una buona soluzione, ma manca ancora l'animazione che si verifica quando usiamo 'app: layout_scrollFlags =" scroll | enterAlways "' –

risposta

0

Ho risolto questo problema, anche se c'è ancora spazio per alcuni piccoli miglioramenti come lo FAB si sta muovendo su e verso il basso ogni volta che ho scorrere RecyclerView all'interno del Fragment

Al fine di rendere toolbar rispondere a app:layout_scrollFlags="scroll|enterAlways" questo è quello che ho fatto

ho cambiato il mio XML Attività a:

<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" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:fitsSystemWindows="true"> 

    <android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <android.support.design.widget.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" 
       android:background="@color/colorPrimary" 
       android:title="@string/app_name" 
       app:layout_scrollFlags="scroll|enterAlways"/> 
     </android.support.design.widget.AppBarLayout> 

     <FrameLayout 
      android:id="@+id/fragmentContainer" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior" 
      /> 
    </android.support.design.widget.CoordinatorLayout> 


    <android.support.design.widget.NavigationView 
     android:id="@+id/drawerNavigationView" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:itemTextColor="@color/navview_text_color" 
     app:menu="@menu/home_drawer_items_menu"/> 
</android.support.v4.widget.DrawerLayout> 

Inoltre ho cambiato la mia Frammento XML a:

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="0"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"/> 

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

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/viewPager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@android:color/black"/> 

     <android.support.design.widget.FloatingActionButton 
      android:id="@+id/fab" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentEnd="true" 
      android:layout_alignParentRight="true" 
      android:layout_marginBottom="60dp" 
      android:layout_marginEnd="20dp" 
      android:layout_marginRight="20dp" 
      android:clickable="true" 
      android:src="@drawable/ic_plus" 
      android:tint="@android:color/white" 
      app:elevation="5dp"/> 
    </RelativeLayout> 
</LinearLayout> 
+0

app: layout_scrollFlags = "scroll | enterAlways" aggiungendo questo al layout del contenitore farà sì che il contenitore si traduca, quindi qualsiasi vista che gravita sul fondo all'interno dei frammenti non sarà più visibile; – Sjd

0

Se ho capito la tua domanda correttamente che cosa si può fare è

1) includere la Toolbar e NavigationDrawer in MainActivity quindi sarà accessibile in tutti i frammenti troppo.

2) Inserisci le schede in solo ParentFragment che contiene ViewPager per altri frammenti

con questo approccio Toolbar e NavigationDrawer saranno visibili in tutti i frammenti, mentre le schede solo in ParentFragment

Speranza che aiuta

+0

cosa hai detto , l'ho già fatto. Per favore leggi di nuovo la domanda. Voglio nascondere la barra degli strumenti quando faccio scorrere recyclerview in frammento. –

+0

perché non usi [onScrollListener] (http://developer.android.com/intl/es/reference/android/support/v7/widget/RecyclerView.OnScrollListener.html)? – Max

+0

Lo sto usando per ora ma non mi dà ancora l'animazione fluida che app: layout_scrollFlags = "scroll | enterAlways" 'mi dà –

0

Anche questo problema si è verificato. Ma è stata trovata una soluzione. La soluzione con rilavorazione xml non può essere, quindi è necessario farlo a livello di programmazione. Tutto ciò di cui abbiamo bisogno è Inflater. Sì, sì, è così semplice. Al volo cambia xml per far funzionare tutto lo scorrimento. Gonfia/AddView/RemoveView - questo è tutto ciò che serve!

Problemi correlati