ExpandableSelector alternatives and similar packages
Based on the "Other Widget" category.
Alternatively, view ExpandableSelector alternatives based on common mentions on social networks and blogs.
-
ShortcutBadger
The ShortcutBadger makes your Android App show the count of unread messages as a badge on your App shortcut! -
Litho (By Facebook)
A declarative framework for building efficient UIs on Android. -
DragSortListView
Extension of the Android ListView that enables drag-and-drop reordering (No longer maintained). -
TapTargetView
An implementation of tap targets from the Material Design guidelines for feature discovery. -
android-viewbadger
A simple way to "badge" any given Android view at runtime without having to cater for it in layout -
android-stackblur
Android StackBlur is a library that can perform a blurry effect on a Bitmap based on a gradient or radius, and return the result. The library is based on the code of Mario Klingemann. -
DraggablePanel
Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube graphic component. -
aFileChooser
Android library that provides a file explorer to let users select files on external storage. -
Swipecards
A Tinder-like Android library to create the swipe cards effect. You can swipe left or right to like or dislike the content. -
TourGuide
TourGuide is an Android library that aims to provide an easy way to add pointers with animations over a desired Android View -
AndroidQuery
Android-Query (AQuery) is a light-weight library for doing asynchronous tasks and manipulating UI elements in Android. -
android-segmented-control
ios7 UISegmentedControl for android -
MultiSnapRecyclerView
Android library for multiple snapping of RecyclerView -
StickyGridHeaders
An Android Library that makes it easy to make grid views with sectioned data and headers that stick to the top. -
FloatingView
FloatingView can make the target view floating above the anchor view with cool animation. -
TileView
The TileView widget is a subclass of ViewGroup that provides a mechanism to asynchronously display tile-based images, with additional functionality for 2D dragging, flinging, pinch or double-tap to zoom, adding overlaying Views (markers), built-in Hot Spot support, dynamic path drawing, multiple levels of detail, and support for any relative positioning or coordinate system. -
NiftyNotification
effects for android notifications.base on (Crouton) -
Android-ActionItemBadge
This library offers a simple method to add a small badge icon to your ActionBar-MenuItem -
RippleView
View that imitates Ripple Effect on click which was introduced in Android L (for Android 2.3+) -
android-sliding-layer-lib
This repository host a library that provides an easy way to include an autonomous layer/view that slides from the side of your screen and which is fully gesture ready, the same way as our detail view in Wunderlist 2 does. This pattern can also be seen in Google+’s notification center or in Basecamp’s detail view. -
Emoji
A simple library to add Emoji support to your Android Application. In a PopupWindow Emojis can be chosen. In order to edit and display text with Emojis this library provides public APIs: EmojiEditText & EmojiTextView. -
SortableTableView
An Android library containing a simple TableView and an advanced SortableTableView providing a lot of customisation possibilities to fit all needs. -
ScratchView
ScratchView repo is UX Design involving scratch cards like views which are scratched to reveal the information they conceal.
Get performance insights in less than 4 minutes
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of ExpandableSelector or a related project?
README
ExpandableSelector

ExpandableSelector is an Android library created to show a list of Button/ImageButton widgets inside a animated container which can be collapsed or expanded.
Screenshots
[Demo Screenshot][1]
Usage
To use ExpandableSelector
in your application you have to follow this steps:
- 1 - Add
ExpandableSelector
to your layout:
<com.karumi.expandableselector.ExpandableSelector
android:id="@+id/es_sizes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
- 2 - During your Activity/Fragment creation lifecycle create a list of
ExpandableItem
instances and configure them to be used inside yourExpandableSelector
widget:
private void initializeSizesExpandableSelector() {
ExpandableSelector sizesExpandableSelector = (ExpandableSelector) findViewById(R.id.es_sizes);
List<ExpandableItem> expandableItems = new ArrayList<ExpandableItem>();
expandableItems.add(new ExpandableItem("XL"));
expandableItems.add(new ExpandableItem("L"));
expandableItems.add(new ExpandableItem("M"));
expandableItems.add(new ExpandableItem("S"));
sizesExpandableSelector.showExpandableItems(expandableItems);
}
- 3 - To be able to listen the animation events configure a
ExpandableSelectorListener
instance:
private void configureExpandableSelectorListener() {
sizesExpandableSelector.setExpandableSelectorListener(new ExpandableSelectorListener() {
@Override public void onCollapse() {
//Do something here
}
@Override public void onExpand() {
//Do something here
}
@Override public void onCollapsed() {
//Do something here
}
@Override public void onExpanded() {
//Do something here
}
});
}
- 4 - To be able to listen the click events configure a
OnExpandableItemClickListener
instance:
private void configureExpandableSelectorClickListener() {
sizesExpandableSelector.setOnExpandableItemClickListener(new OnExpandableItemClickListener() {
@Override public void onExpandableItemClickListener(int index, View view) {
//Do something here
}
});
}
Customization
You can easily customize the appearance of your ExpandableItem
instances. Just asign a value to expandableItemSyle
attribute in your theme and make it reference a custom style.
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="expandableItemStyle">@style/ExpandableItemStyle</item>
</style>
<style name="ExpandableItemStyle">
<item name="android:layout_height">@dimen/item_size</item>
<item name="android:layout_width">@dimen/item_size</item>
<item name="android:background">@drawable/bg_item_with_title</item>
<item name="android:layout_margin">@dimen/item_margin</item>
<item name="android:textColor">@color/gray</item>
<item name="android:textSize">@dimen/item_text_size</item>
</style>
Remember that declaring a ExpandableItemStyle
as described before with the layout height and width is mandatory to avoid inflation errors.
The resources you can show in the Button/ImageButton widgets automatically added to ExpandableSelector
are:
- Background resource identifier configured as Button/ImageButton background.
- Resource identifier configured as ImageButton image source.
- Title configured as Button text.
All this information will be provided to the ExpandableSelector
inside a List<ExpandableItem>
object created by the library user.
Some extra configuration parameters can be provided from the XML like styleable attributes:
<com.karumi.expandableselector.ExpandableSelector
xmlns:expandable_selector="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
expandable_selector:hide_background_if_collapsed="true"
expandable_selector:hide_first_item_on_collapse="true"
expandable_selector:expand_interpolator="@android:anim/accelerate_interpolator"
expandable_selector:collapse_interpolator="@android:anim/decelerate_interpolator"
expandable_selector:container_interpolator="@android:anim/accelerate_decelerate_interpolator"
expandable_selector:animation_duration="100">
The attributes you can configure are:
- expandable_selector:hide_background_if_collapsed: Changes the background associated to the
ExpandableSelector
widget to a transparent one while the widget is collapsed. - expandable_selector:hide_first_item_on_collapse: Changes the first item visibility to View.INVISIBLE when the
ExpandableSelector
is collapsed. - expandable_selector:expand_interpolator: Changes the interpolator used in the expand animation (applies to the items), you can use an interpolator available in the platform, or create your own.
- expandable_selector:collapse_interpolator: Changes the interpolator used in the collapse animation (applies to the items).
- expandable_selector:container_interpolator: Changes the interpolator used in the expand & collapse animation (applies to the container)
- expandable_selector:animation_duration: Changes the animation duration in milliseconds to the one indicated.
Add it to your project
Add ExpandableSelector
dependency to your build.gradle
file
dependencies{
compile 'com.karumi:expandableselector:1.0.0'
}
or to your pom.xml
if you are using Maven instead of Gradle
<dependency>
<groupId>com.karumi</groupId>
<artifactId>expandableselector</artifactId>
<version>1.0.0</version>
<type>aar</type>
</dependency>
Do you want to contribute?
Please, do it! We'd like to improve this library with your help :)
License
Copyright 2015 Karumi
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*Note that all licence references and agreements mentioned in the ExpandableSelector README section above
are relevant to that project's source code only.