TextViewReadMore
Android library for creating expand button on your long textview
Install / Use
/learn @eriffanani/TextViewReadMoreREADME
TextView Read More
Make your long textview setup easily and quickly
Installation
settings.gradle
dependencyResolutionManagement {
repositories {
maven { url 'https://jitpack.io' }
}
}
build.gradle(app)
dependencies {
implementation 'com.github.eriffanani:TextViewReadMore:4.1.0'
}
How To Use
- Basic
<com.erif.readmoretextview.TextViewReadMore
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:readMoreMaxLines="3" (Default 1)
android:text="YOUR TEXT HERE"/>

Styling
- Expand
<com.erif.readmoretextview.TextViewReadMore
app:readMoreMaxLines="3" (Default 1)
app:expandText="Open Text" (Default "Read More")
app:expandTextColor="@color/teal_200" (Default Color.BLUE)
app:expandTextStyle="bold|italic" (Default normal)
app:expandTextUnderline="true" (Default false)
android:text="YOUR TEXT HERE"/>

- Collapse
<com.erif.readmoretextview.TextViewReadMore
app:collapseText="Close Text" (Default "Close")
app:collapseTextColor="@color/teal_200" (Default Color.BLUE)
app:collapseTextStyle="bold|italic" (Default normal)
app:collapseTextUnderline="true" (Default false)
app:collapsed="false" (Default true)/>
Animation
<com.erif.readmoretextview.TextViewReadMore
app:duration="200"
app:interpolator=""
app:interpolatorExpand="bounce"
app:durationExpand="800"
app:interpolatorCollapse="anticipate_overshoot"
app:durationCollapse="900"/>
<!--Animation Interpolator-->
<flag name="decelerate"/>
<flag name="accelerate"/>
<flag name="anticipate_overshoot"/>
<flag name="anticipate"/>
<flag name="bounce"/>
<flag name="fast_out_linear_in"/>
<flag name="fast_out_slow_in"/>
<flag name="linear_out_slow_in"/>
Ellipsis Type
<com.erif.readmoretextview.TextViewReadMore
app:ellipsisType="none" (Default dots)/>
Action
<com.erif.readmoretextview.TextViewReadMore
app:actionClickColor="@color/colorRed" (Default @color/text_view_read_more_button_hover_color)/>
TextViewReadMore txtReadMore = findViewById(R.id.txtReadMore);
txtReadMore.onClickExpand(v -> txtReadMore.toggle());
txtReadMore.onClickCollapse(v -> txtReadMore.toggle());
Listener
- Java
txtReadMore.toggleListener(collapsed -> { // TODO ACTION });
- Kotlin
txtReadMore.toggleListener { collapsed -> // TODO ACTION }
Result
<img src="https://github.com/eriffanani/TextViewReadMore/assets/26743731/aaee9b13-b095-4f3e-95f4-6319c3e2dbc9" width="300"/>With recyclerview
- Use collapse function to onBindViewHolder
/**
item.isCollapsed() is variable from your item to store and save state of
textview (collapsed/expanded) when item displayed again from RecyclerView scroll
*/
holder.text.collapsed(item.isCollapsed());
- Use Toggle
holder.text.onClickExpand(v -> holder.text.toggle());
holder.text.onClickCollapse(v -> holder.text.toggle());
holder.text.toggleListener(collapsed -> {
item.setCollapsed(collapsed);
notifyItemChanged(position);
});
- Use Collapse Properties
// onClickExpand or onClickCollapse
holder.text.onClickExpand(v -> {
boolean status = !item.isCollapsed();
holder.text.collapsed(status);
item.setCollapsed(status);
notifyItemChanged(position);
});
Result
<img src="https://github.com/eriffanani/TextViewReadMore/assets/26743731/9315357b-6974-4796-a4db-df2d5bd56d74" width="300"/>Information
This library is still being developed further, please provide feedback if you find a bug. Thank you
Licence
Copyright 2022 Mukhammad Erif Fanani
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.
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
