An Expandable TextView for Android written in Kotlin. The main ideia was study how create a library in Android and deploy on Maven Central Repository.
Take a look at the demo project.
The library is included in Maven Central Repository, so just add this dependency to your module level gradle.build
:
dependencies {
implementation 'io.github.glailton.expandabletextview:expandabletextview:$LatestVersion'
}
- collapsedLines -> number of visible lines
- isExpanded -> state of textview (default is false)
- animationDuration -> duration of the animation in ms (Will be implemented in a future version)
- readMoreText -> text to use instead of default ellipses
- readLessText -> text to use instead of default ellipses
- expandType -> type of expandable layout, could be layout or popup
- ellipsizeTextColor -> color of ellipsize text
- isUnderlined -> underline the ellipsize text
Then use ExpandableTextView
just as you would use any other TextView
.
Xml snippet:
<io.github.glailton.expandabletextview.ExpandableTextView
android:id="@+id/expand_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
expandableTextView:collapsedLines="3"
expandableTextView:animDuration="500"
expandableTextView:readMoreText="Leia mais"
expandableTextView:readLessText="Leia menos"
expandableTextView:textMode="line"
expandableTextView:isExpanded="true"
app:expandType="layout"
android:text="@string/very_long_text" />
or programmatically
binding.expandTvProg
.setAnimationDuration(500)
.setReadMoreText("View More")
.setReadLessText("View Less")
.setCollapsedLines(3)
.setIsExpanded(true)
.setIsUnderlined(true)
.setExpandType(EXPAND_TYPE_POPUP)
.setEllipsizedTextColor(ContextCompat.getColor(this, R.color.purple_200))
binding.expandTvProg.text =
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." +
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." +
"Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur." +
"Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
binding.expandTvProg.setOnClickListener {
binding.expandTvProg.toggle()
if (binding.expandTvVeryLong.isExpanded && binding.expandTvVeryLong.expandType == EXPAND_TYPE_LAYOUT)
binding.expandTvVeryLong.toggle()
}
- Setting maximum number of collapsed lines via xml.
- Setting the ellipsized text via xml.
- Setting the collapsed text via xml.
- Setting if the text starts expanded or collapsed.
- Setting if the expandable type is layout or popup
//TODO Take a look at the library documentation with description of public functions and properties:
If you wish to send a pull request, please make sure to checkout from main
branch and merge with main
branch as well.
This project is licensed under the MIT License - see the LICENSE file for details.
This library was based on: viewmore-textview.