2015-11-22 10 views
17

Voglio creare uno Fragment con uno RecyclerView che diapositive e mostri più elementi mentre lo fai scorrere verso l'alto.Scorri RecyclerVisualizza quando lo fai scorrere verso l'alto o fai scorrere verso il basso il recyclerview verso il basso

Ecco un esempio di ciò di cui sto parlando.

creazione iniziale: colpi

enter image description here

utente Fino a scivolare RecyclerView up, mostra più elementi:

enter image description here

Ci sono alcuni problemi, vorrei non utilizzare uno CoordinatorLayout e vorrei impostarlo su dove l'elemento s nello stack RecyclerView direttamente sopra lo EditText.

Questo è il codice di layout che sto usando:

<android.support.design.widget.CoordinatorLayout 
android:id="@+id/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:visibility="visible"> 

<android.support.design.widget.AppBarLayout 
    android:id="@+id/appBarLayout" 
    android:layout_width="match_parent" 
    android:layout_height="400dp" 
    android:background="@android:color/transparent" 
    android:fitsSystemWindows="true" 
    android:orientation="vertical"> 

    <android.support.design.widget.CollapsingToolbarLayout 
     android:id="@+id/collapsingToolbar" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@android:color/transparent" 
     android:fitsSystemWindows="true" 
     app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

     <View 
      android:id="@+id/emptyView" 
      android:layout_width="match_parent" 
      android:layout_height="400dp" 
      android:background="@android:color/transparent" 
      app:layout_collapseMode="parallax"/> 

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

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

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recyclerView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

     <EditText 
      android:id="@+id/editText" 
      android:paddingLeft="16dp" 
      android:inputType="textAutoCorrect" 
      android:layout_centerVertical="true" 
      android:background="@android:color/transparent" 
      android:layout_width="match_parent" 
      android:layout_height="56dp"/> 

    </RelativeLayout> 

</RelativeLayout> 

e ottengo qualcosa di simile:

enter image description here

questo è sicuramente non è scalabile, e vista vuoto avrebbe fatto devono essere misurati in modo coerente

+1

c'è un motivo per cui si non vuoi un'implementazione di CoordinateLayout? – Ari

risposta

11

ho risolto questo utilizzando una consuetudine TouchListener tutte le altre soluzioni erano molto semplici e limitata ad una specifica e astuccio d'uso in scatola.

Il modo in cui ho fatto è stato quello di realizzare un nuovo TouchListener in base al largo di questa libreria:

BounceTouchListener

vengo i seguenti risultati:

enter image description here

+0

Grazie a @AndyRoid per BounceTouchListener –

4

Usa RecyclerView con 2 tipi di file:

  1. vuoti riga/righe di colore grigio (senza divisorio)
  2. righe con contenuto come hai già

Il RecyclerView dovrà match_parent all'intero frammento

In questo modo si ottiene l'effetto corretto di un'area "vuota" sopra lo RecyclerView.

enter image description here

+0

Questa sarebbe una soluzione che vorrei andare in cima alla mia testa, e ho preso in considerazione questo, ma ci sono alcuni problemi chiave, è possibile far scorrere l'intero 'RecyclerView' Vorrei non scorrere oltre gli elementi. Quindi fondamentalmente voglio evitare qualcosa come l'immagine 3 – AndyRoid

+0

@AndyRoid Non ho capito qual è il tuo problema con questa opzione? Puoi spiegarlo con maggiori dettagli? – David

+0

Nella terra di iOS è possibile impostare contenuto aggiuntivoInset nella parte superiore o inferiore di una vista tabella, questo fornisce un'area di scorrimento aggiuntiva. C'è qualcosa di simile in Android? Voglio impostare la live sopra l'edittext e poi fornire contentInset aggiuntivo sotto RecyclerView in modo da poter scorrere solo un po 'sotto la tastiera. – AndyRoid

0

È possibile utilizzare setReverseLayout di LinearLayoutManager

Utilizzato per invertire punto di attraversamento e l'ordine di layout. Questo comportamento è simile a alla modifica del layout per le viste RTL. Se impostato su true, il primo elemento è disposto alla fine dell'interfaccia utente, il secondo elemento è disposto prima di esso ecc. Per i layout orizzontali, dipende dalla direzione del layout. Se impostato su su true, Se RecyclerView è LTR, rispetto al layout da RTL, se RecyclerView} è RTL, eseguirà il layout da LTR.Se siete alla ricerca di lo stesso comportamento esatto di setStackFromBottom (booleana), utilizzare setStackFromEnd (booleano)