2015-07-28 17 views
9

Realizzo un piccolo progetto con RecyclerView con gli elementi CardView all'interno. Ho creato una scheda espandibile (espansa premendo sul piccolo pulsante all'interno della scheda). Ogni carta contiene sempre la parte visibile (id: top_layout) e la parte espandibile (id: expandable_part_layout).RecyclerView card espandibileView

Il problema è che quando espongo l'ultimo oggetto o elemento che dopo l'espansione ha il bordo inferiore sotto il bordo inferiore di RecyclerView (una parte dell'elemento o elemento espanso è invisibile all'utente) il RecyclerView dovrebbe scorrere su tutti gli elementi per mostrare l'intero oggetto che Ho ampliato Ho provato ad usare scrollToPosition e metodi simili per scorrere fino alla fine della carta espansa ma senza successo.

Quindi, la mia domanda è come farlo dopo aver espanso la carta scorrere su RecyclerView sull'altezza della parte espansa della scheda? - Questa è la mia idea, forse qualcuno ha una soluzione migliore.

<android.support.v7.widget.CardView 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="wrap_content" 
    app:cardCornerRadius="8px" 
    app:cardPreventCornerOverlap="false"> 

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

    <RelativeLayout 
     android:id="@+id/top_layout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="false" 
     android:layout_alignParentTop="true" 
     > 
      <!-- some other controls --> 

      <ImageButton 
       android:id="@+id/card_header_inner_expand_btn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:background="?android:selectableItemBackground" 
       android:clickable="true" 
       android:padding="6dp" 
       android:src="@drawable/expand_icon" /> 

    </RelativeLayout> 

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/expandable_part_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/top_layout" 
     android:animateLayoutChanges="true" 
     android:clickable="false" 
     android:visibility="gone"> 

     <RadioGroup 
      android:id="@+id/extened_stage_radiogroup" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_centerVertical="true" 
      android:orientation="vertical"> 

      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

      <RadioButton 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

     </RadioGroup> 

     <!-- some other controls --> 

    </RelativeLayout> 
</RelativeLayout> 

+1

Hai trovato una soluzione per questo problema? Ho esattamente lo stesso problema. – Kerkhofsd

+0

Anch'io sono interessato se hai trovato una soluzione per questo. – Allinone51

+0

Purtroppo non ho ancora trovato la soluzione. – Darko

risposta

1

È possibile utilizzare questa istanza lib tuo modo autonomo sviluppato, provate questo:

FASE 1: Aggiungi sotto la dipendenza al build.gradle del file:

**compile 'com.github.traex.expandablelayout:library:1.2.2'** use instead of 
compile 'com.github.traex.expandablelayout:library:1.3' 

PASSO 2: Aggiungi sotto Visualizza il layout della tua carta, card_layout Deve essere l ook in questo modo:

<com.andexert.expandablelayout.library.ExpandableLayout 
    android:id="@+id/row_0" 
    xmlns:expandable="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    expandable:headerLayout="@layout/YOUR_CARD_VIEW_UI" 
    expandable:contentLayout="@layout/YOUR_CARD_VIEW_EXPANDED_UI"/> 

FASE 3: Nella tua definire di RecyclerView ricordarsi di:

recList.setItemViewCacheSize(ITEMS_COUNT); 

non esitate a chiedere :-)

2

Che tecnica stai usando al fine di Fai quello?

ero nella stessa situazione ma per me il problema erano queste funzioni ExpandAndCollapseViewUtil.expand() e ExpandAndCollapseViewUtil.collapse() da questo tutorial Diseño Android: Tarjetas con CardView così io non lo uso. Invece di mostrare/nascondere la vista del cardview senza alcuna animazione.

+0

Soluzione piuttosto semplice, grazie! –