ExpandableTextView
Light-weighted, convenient implementation of expandable text view that supports expanding & collapsing animations for Android projects.
Why ExpandableTextView?
When the text is too long, a designer reasonably asks if it is possible to truncate the text by having a certain line count limitation. In addition, an expanding call-to-action (ie. "Read more") should be shown at the end of the text. When user taps the text, it expands to show the full content. ExpandableTextView helps creating such behaviour easily.
Demonstration
Normal | RTL | With drawable |
---|---|---|
normal.mp4 |
rtl.mp4 |
drawable.mp4 |
maxLines when expand | Width changes at runtime |
---|---|
maxLines.mp4 |
width.mp4 |
Install
Step 1. Add the JitPack repository to your build file
- AGP older than 7.1.0
// build.gradle (root level)
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
- AGP 7.1.0 and newer
// settings.gradle
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
// build.gradle (module level)
dependencies {
implementation 'com.github.giangpham96:ExpandableTextView:1.0.1'
}
Usage
"> Example XML
<io.github.giangpham96.expandabletextview.ExpandableTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/purple_100" android:padding="16dp" android:maxLines="10" app:expandCta="More" app:collapsedMaxLines="2" app:expandCtaColor="@color/blue_500" app:expandableText="@string/long_text" />
Attributes
Attributes | Type | Description | Default value |
---|---|---|---|
app:collapsedMaxLines | Int | The maximum line counts when the text is collapsed | 3 |
app:expandCta | String | The Cta at the end of truncated text such as "View more" | "" (Nothing will be shown at the end of truncated text) |
app:expandCtaColor | Color | The color of expand Cta | #ffaa66cc |
app:expandableText | String | The text to be displayed on this text view | "" |
Public functions
collapsedMaxLines
public getter & setter for the maximum line counts when the text is collapsed.expandCta
public getter & setter for the Cta at the end of truncated text such as "View more".expandCtaColor
public getter & setter for the color of expand Cta.expandableText
public getter & setter for the text to be displayed on this text view.collapsed
public getter to determine if the text is being collapsedexpanded
public getter to determine if the text is being expandedtoggle
function that makes the text changes its state from collapsed to expanded & vice versa. It also adds animation transition during the state change.
Notes
- DO NOT directly use
android:text
orsetText
in this view. Useapp:expandableText
orexpandableText
instead. Attempting to useandroid:text
orsetText
will lead to unexpected behaviour. - At any time,
collapsedMaxLines
MUST always be less than or equal tomaxLines
. Otherwise, an exception will be thrown. - This view only supports
TextUtils.TruncateAt.END
.