5

Ho creato un layout con due RecyclerViews. Uno scorre in orizzontale mentre altri scorre verticalmente. Posso scorrere correttamente all'interno di ogni RecyclerView ma la pagina nel suo insieme non scorrerà, ad es. Top RecyclerView rimane sempre in alto e in basso rimane in basso come entrambi sono fissati in posizione.Scollegamento con più immagini Recycler nel layout

seguito è il mio layout xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

     <EditText 
      android:id="@+id/search" 
      android:layout_width="fill_parent" 
      android:layout_height="50dp" 
      android:hint="Search Dramas" 
      android:textSize="16sp" 
      android:paddingLeft="10dp" 
      android:gravity="center" 
      android:textColor="@color/dark_grey" 
      android:textColorHint="@color/dark_grey" 
      android:background="@drawable/border_bottom"/> 


     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/border_bottom_background_black" 
      android:textColor="@color/white" 
      android:padding="10dp" 
      android:text="Most Watched"/> 

     <!-- A RecyclerView to display horizontal list --> 
     <android.support.v7.widget.RecyclerView 
      android:id="@+id/featured" 
      android:scrollbars="none" 
      android:layout_width="fill_parent" 
      android:layout_height="240dp" 
      android:paddingLeft="0dp" 
      android:paddingRight="15dp" 
      android:paddingTop="15dp" 
      android:paddingBottom="25dp" 
      android:background="@color/black"/> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/border_bottom_backgroundless" 
      android:textColor="@color/dark_grey" 
      android:padding="10dp" 
      android:text="All Dramas"/> 

     <!-- A RecyclerView to display vertical list --> 
     <android.support.v7.widget.RecyclerView 
      android:id="@+id/pick_item" 
      android:scrollbars="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="match_parent"/> 


</LinearLayout> 

How activity looks

risposta

6

Sono stato in grado di risolvere il problema inserendo tutto all'interno di ScrollView e quindi impostando manualmente l'altezza di RecyclerView verticale/a livello di programmazione.

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/scrollView"> 

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

      <EditText 
       android:id="@+id/search" 
       android:layout_width="fill_parent" 
       android:layout_height="50dp" 
       android:hint="Search Dramas" 
       android:textSize="16sp" 
       android:paddingLeft="10dp" 
       android:gravity="center" 
       android:textColor="@color/dark_grey" 
       android:textColorHint="@color/dark_grey" 
       android:background="@drawable/border_bottom"/> 


      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/border_bottom_background_black" 
       android:textColor="@color/white" 
       android:padding="10dp" 
       android:text="Most Watched"/> 

      <!-- A RecyclerView to display horizontal list --> 
      <android.support.v7.widget.RecyclerView 
       android:id="@+id/featured" 
       android:scrollbars="none" 
       android:layout_width="fill_parent" 
       android:layout_height="240dp" 
       android:paddingLeft="0dp" 
       android:paddingRight="15dp" 
       android:paddingTop="15dp" 
       android:paddingBottom="25dp" 
       android:background="@color/black"/> 

      <TextView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/border_bottom_backgroundless" 
       android:textColor="@color/dark_grey" 
       android:padding="10dp" 
       android:text="All Dramas"/> 

      <!-- A RecyclerView to display list --> 
      <android.support.v7.widget.RecyclerView 
       android:id="@+id/pick_item" 
       android:paddingBottom="20dp" 
       android:scrollbars="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="match_parent" 
       android:minHeight="840dp"/> 


    </LinearLayout> 
</ScrollView> 

impostazione dell'altezza di RecyclerView di programmazione:

LinearLayout.LayoutParams params = new  
    LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
    ViewGroup.LayoutParams.WRAP_CONTENT); 
// calculate height of RecyclerView based on child count 
params.height=1150; 
// set height of RecyclerView 
recyclerView.setLayoutParams(params); 
+0

Stai perdendo l'ottimizzazione di RecycleVew, no? In altre parole, RecycleView non ricicla le viste. –

3

RecyclerView solo guadagnato (ancora limitata) il supporto per lo scorrimento nidificato nella versione 22.2.0 - il mio primo suggerimento sarebbe quello di provare che.

L'unica opinione che supporta pienamente lo scorrimento annidata è NestedScrollView (si può vedere questo osservando che esso implementa sia NestedScrollingChild e NestedScrollingParent) ed è stato aggiunto a sostegno v4 versione 22.1.0 (leggermente migliorata in 22.2.0). Se si dispone di un solo orizzontale RecyclerView come elemento più in alto nella verticale RecyclerView, è possibile sostituirlo con uno NestedScrollView contenente un LinearLayout con lo RecyclerView orizzontale seguito dal verticale RecyclerView.

+0

ho usato tre vista riciclatore in un unico layout e in una vista di scorrimento. il mio riciclatore visualizza gli articoli nella seconda vista del riciclatore che scorre. e volevo mostrare tutti gli elementi senza scorrere. ma ha avuto successo con NestedScrollView. grazie –

Problemi correlati