-
-
Save Dimas-Prasetya/c5e2279b624f777e9412a29493a48fdf to your computer and use it in GitHub Desktop.
Collapsing cardview example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" | |
tools:context=".MainActivity"> | |
<android.support.v7.widget.RecyclerView | |
android:id="@+id/recycler" | |
android:layout_width="match_parent" | |
android:layout_height="match_parent" /> | |
</LinearLayout> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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/apk/res-auto" | |
xmlns:tools="http://schemas.android.com/tools" | |
android:id="@+id/card" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:layout_marginLeft="8dp" | |
android:layout_marginRight="8dp" | |
android:layout_marginBottom="8dp" | |
android:animateLayoutChanges="true"> | |
<RelativeLayout | |
android:id="@+id/contents" | |
android:layout_width="match_parent" | |
android:layout_height="wrap_content" | |
android:animateLayoutChanges="true" | |
android:padding="16dp"> | |
<TextView | |
android:id="@+id/title" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:textSize="22sp" | |
tools:text="Notification #1" /> | |
<ImageView | |
android:id="@+id/toggle" | |
android:layout_width="20dp" | |
android:layout_height="20dp" | |
android:tint="#000" | |
android:layout_alignParentEnd="true" | |
app:srcCompat="@android:drawable/arrow_down_float" /> | |
<TextView | |
android:id="@+id/body" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_marginTop="8dp" | |
android:layout_below="@id/title" | |
android:text="lorem ipsum" /> | |
<View | |
android:id="@+id/divider" | |
android:layout_width="match_parent" | |
android:layout_height="1dp" | |
android:layout_marginTop="16dp" | |
android:layout_below="@id/body" | |
android:background="@color/cardview_dark_background" /> | |
<TextView | |
android:id="@+id/footer" | |
android:layout_width="wrap_content" | |
android:layout_height="wrap_content" | |
android:layout_below="@id/divider" | |
android:layout_marginTop="8dp" | |
android:text="Some footer" /> | |
</RelativeLayout> | |
</android.support.v7.widget.CardView> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.samid.collapsingcard; | |
import android.animation.LayoutTransition; | |
import android.support.constraint.ConstraintLayout; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.support.v7.widget.CardView; | |
import android.support.v7.widget.LinearLayoutManager; | |
import android.support.v7.widget.RecyclerView; | |
import android.util.Log; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.RelativeLayout; | |
import android.widget.TextView; | |
public class MainActivity extends AppCompatActivity { | |
private static final String TAG = "MainActivity"; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
RecyclerView recycler = findViewById(R.id.recycler); | |
recycler.setLayoutManager(new LinearLayoutManager(this)); | |
recycler.setAdapter(new MyAdapter()); | |
} | |
private static class MyAdapter extends RecyclerView.Adapter<MyViewHolder> { | |
@Override | |
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { | |
LayoutInflater inflater = LayoutInflater.from(parent.getContext()); | |
View itemView = inflater.inflate(R.layout.item, parent, false); | |
return new MyViewHolder(itemView); | |
} | |
@Override | |
public void onBindViewHolder(MyViewHolder holder, int position) { | |
holder.title.setText("Notification #" + position); | |
} | |
@Override | |
public int getItemCount() { | |
return 10; | |
} | |
} | |
private static class MyViewHolder extends RecyclerView.ViewHolder { | |
private final TextView title; | |
private final View toggle; | |
private final View body; | |
public MyViewHolder(View itemView) { | |
super(itemView); | |
this.title = itemView.findViewById(R.id.title); | |
this.toggle = itemView.findViewById(R.id.toggle); | |
this.body = itemView.findViewById(R.id.body); | |
toggle.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
body.setVisibility(body.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); | |
} | |
}); | |
CardView card = itemView.findViewById(R.id.card); | |
card.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); | |
RelativeLayout contents = itemView.findViewById(R.id.contents); | |
contents.getLayoutTransition().enableTransitionType(LayoutTransition.CHANGING); | |
contents.getLayoutTransition().setStartDelay(LayoutTransition.CHANGE_DISAPPEARING, 0); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment