ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow a maximum of customization. You can find a sample that how to use an ExpandableLayout to your layout.
The lib is available via jCentre
dependencies {
compile 'com.github.saeedjassani:expandablelayout:1.0.3'
}
Declare an ExpandableLayout inside your XML layout file. You also need to other layouts for header and content:
<com.github.saeedjassani.ExpandableLayout
android:id="@+id/expandableLayout"
xmlns:expandable="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
expandable:el_headerLayout="@layout/view_header"
expandable:el_contentLayout="@layout/view_content"/>
You can use ExapandableLayout in an ExpandableLayoutListView
with ExpandableLayoutItem
as row :
ExpandableLayoutItem
<com.github.saeedjassani.ExpandableLayoutItem
android:id="@+id/expandableLayout"
xmlns:expandable="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
expandable:el_headerLayout="@layout/view_header"
expandable:el_contentLayout="@layout/view_content"/>
ExpandableLayoutListView
<com.github.saeedjassani.ExpandableLayoutListView
android:id="@+id/expandableLayout"
xmlns:expandable="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
If you want to manage the OnScroll, you have to use OnExpandableLayoutScrollListener
and don't forget to call super in each method.
You can call dynamically open
, close
and isOpened
from an ExpandableLayout object.
You can change duration of the animation:
- app:duration [integer def:200] --> Duration of the animation
If you want to use the ExpandableLayoutListView
with EditText, you have to set android:windowSoftInputMode="adjustPan"
to prevent the ListView to redraw itself and close the ExpandableLayoutItem.
Thanks to Google for its ExpandableListview :)
This library is actually a fork of this library. All credits to the original developer. Since that library was not maintained, I uploaded it and will try to accept PRs.