9

Sto cercando una soluzione che mi consenta di espandere un cardview per vedere più informazioni e quindi facilmente comprimerlo. Google Keep ha esempi di carte come questa. Qualcuno sa come lo fanno? Creerò 2 versioni del mio cardview (uno compresso e uno espanso) e quindi userò una classe Animator abbinata a metodi gestuali per la transizione tra le due viste? Sto usando un Recyclerview per tenere i miei cartellini.CardView espandibile/comprendente con clic o gesto di scorrimento (Android)?

ho trovato questo se è affatto rilevante: http://developer.android.com/training/animation/layout.html

+3

Ci sono due parti su la vista della carta, la parte superiore che verrà sempre mostrata e una parte inferiore che verrà nascosta o mostrata, giusto? Quindi puoi cambiare la visibilità della parte inferiore ogni volta che viene toccata una carta (o qualsiasi altro evento) e rendere l'altezza della vista della carta 'wrap_content'. Se funziona come tu intendi, puoi facilmente renderlo un'animazione usando '' e '' in un file xml all'interno della cartella 'anim'. È questo ciò che stai chiedendo? Se è poi fammi sapere, posterò il codice per questo. – NecipAllef

risposta

0
<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/tools" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 

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

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
    //here put the view which is always visible 
<LinearLayout 
android:layout_width="match_parent" 
android:visibilty="gone" 
android:id="@+id/expandableLayout" 
android:layout_height="wrap_content"> 
    //here put which will collapse and expand 
</LinearLayout> 
</android.support.v7.widget.CardView> 

prendere un valore booleano IsExpanded in voi arraylist classe di oggetti

if (listobj.isexpanded) 
    { 
     holder.expandableLayout.setVisibility(View.VISIBLE); 
    } 
    else { 
     holder.expandableLayout.setVisibility(View.GONE); 
    } 
    holder.cardView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (listobj.isexpanded) 
      { 
       holder.expandableLayout.setVisibility(View.GONE); 
       listobj.isexpanded=false; 
       notifyItemChanged(position); 
      } 
      else { 
       holder.expandableLayout.setVisibility(View.VISIBLE); 
       listobj.isexpanded=true; 
       notifyItemChanged(position); 
      } 
     } 
    }); 

provare someting come questo