Android's TextView that can expand/collapse like the Google Play's app description

Last update: May 21, 2022

ExpandableTextView Android Arsenal

ExpandableTextView is an Android library that allows developers to easily create an TextView which can expand/collapse just like the Google Play's app description. Feel free to use it all you want in your Android apps provided that you cite this project.

Quick Demo

Requirements

API Level 8 (Froyo) and above.

Setup

The library is pushed to Maven Central as an AAR, so you just need to add the followings to your build.gradle file:

dependencies {
    compile 'com.ms-square:expandableTextView:0.1.4'
}

Usage

Using the library is really simple, just look at the source code of the provided sample. (Look at the SampleTextListAdapter.java for the use within a ListView)

The important thing to note is that the view Ids for TextView and ImageButton must be set to "@id/expandable_text" and "@id/expand_collapse" respectively for this library to work.

Also, you can optionally set the following attributes in your layout xml file to customize the behavior of the ExpandableTextView.

  • maxCollapsedLines (defaults to 8) The maximum number of text lines allowed to be shown when the TextView gets collapsed

  • animDuration (defaults to 300ms) Duration of the Animation for the expansion/collapse

  • animAlphaStart (defaults to 0.7f) Alpha value of the TextView when the animation starts (NOTE) Set this value to 1 if you want to disable the alpha animation.

  • expandDrawable Customize a drawable set to ImageButton to expand the TextView

  • collapseDrawable Customize a drawable set to ImageButton to collapse the TextView

  <!-- sample xml -->
  <com.ms.square.android.expandabletextview.ExpandableTextView
      xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:expandableTextView="http://schemas.android.com/apk/res-auto"
      android:id="@+id/expand_text_view"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      expandableTextView:maxCollapsedLines="4"
      expandableTextView:animDuration="200">
      <TextView
          android:id="@id/expandable_text"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_marginLeft="10dp"
          android:layout_marginRight="10dp"
          android:textSize="16sp"
          android:textColor="#666666" />
      <ImageButton
          android:id="@id/expand_collapse"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:padding="16dp"
          android:layout_gravity="right|bottom"
          android:background="@android:color/transparent"/>
  </com.ms.square.android.expandabletextview.ExpandableTextView>
// sample code snippet to set the text content on the ExpandableTextView
ExpandableTextView expTv1 = (ExpandableTextView) rootView.findViewById(R.id.sample1)
                    .findViewById(R.id.expand_text_view);
                    
// IMPORTANT - call setText on the ExpandableTextView to set the text content to display
expTv1.setText(getString(R.string.dummy_text1));

License

Copyright 2014 Manabu Shimobe

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.

GitHub

https://github.com/Manabu-GT/ExpandableTextView
Comments
  • 1. java.lang.NullPointerException

    java.lang.NullPointerException at com.ms.square.android.expandabletextview.ExpandableTextView.findViews(ExpandableTextView.java:226) at com.ms.square.android.expandabletextview.ExpandableTextView.onFinishInflate(ExpandableTextView.java:151) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:814) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:809) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:809) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:809) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:782) at android.view.LayoutInflater.inflate(LayoutInflater.java:504) at android.view.LayoutInflater.inflate(LayoutInflater.java:385) at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:400) at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:332) at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:350) at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:688) at com.android.tools.idea.rendering.RenderService$5.compute(RenderService.java:677) at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932) at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:677) at com.android.tools.idea.rendering.RenderService.render(RenderService.java:815) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:646) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:82) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7$1.run(AndroidLayoutPreviewToolWindowManager.java:589) at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178) at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212) at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171) at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$7.run(AndroidLayoutPreviewToolWindowManager.java:584) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320) at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310) at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269) at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227) at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217) at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238) at com.intellij.util.Alarm$Request$1.run(Alarm.java:327) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

    This error, im using Android Studio & Gradle.

    compile 'com.ms-square:expandableTextView:0.1.3'
    
    Reviewed by LinkOut at 2015-01-07 16:05
  • 2. After expanding, it does not show last few lines

    When we expand textview, it is not showing last few lines because getRealTextViewHeight function is not giving correct textview height.I think it should be called on the right place.Please look into this.

    Reviewed by faraz-ahmad at 2014-12-01 05:43
  • 3. Can't build with Gradle

    I use Intellij Idea for android development. I have not been able to build the app with Gradle. I get this error: No such property: GROUP for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer

    Reviewed by tundebabzy at 2014-12-28 16:38
  • 4. It have a bug, I don't know why

    You can try add a button a your demo project, and on the onClickListener you set the dummy_text2 again. like

        expTv2.setText(getString(R.string.dummy_text2));
    
        Button bt = (Button) findViewById(R.id.test);
    
        bt.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                expTv2.setText(getString(R.string.dummy_text2));
            }
        });
    

    after the button clicked, (that is the same text is set again after view created and when textview is collapsed), the textview can't expand fully. I found the mMeasuredTextHeight is a wrong value.

    may be I can solve this problem.

    thank you for your code.

    Reviewed by com314159 at 2014-10-30 10:18
  • 5. Expand Collapse Icons not visible

    when i tried to implement the expandable text-view in a list view The expand and collapse icons are not appearing could you please help me out if i am doing wrong

    MyCode: List_rowitem

    <!--  ListRow Left sied Thumbnail image -->
    <LinearLayout android:id="@+id/thumbnail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="3dip"
        android:layout_alignParentLeft="true"
        android:background="@android:color/transparent"
        android:layout_marginRight="5dp">
    
        <ImageView
            android:id="@+id/list_image"
            android:contentDescription="@string/app_name"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:background="@drawable/imagebordercolor"
            />
    
    </LinearLayout>
    
    <!-- Title Of Song-->
    
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/thumbnail"
        android:layout_toRightOf="@+id/thumbnail"
        android:textColor="@android:color/white"
        android:textSize="15sp"
        android:textStyle="bold"
        android:typeface="sans" />
    
    <!-- Description -->
    <com.fiveytechnologies.bhagavadgita.views.ExpandableTextView 
        android:id="@+id/expand_text_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:focusable="false"
        android:focusableInTouchMode="false"
        android:layout_marginTop="1dip"
        android:layout_toRightOf="@+id/thumbnail"
        expandableTextView:maxCollapsedLines="8"
        expandableTextView:animAlphaStart="1"
        >
    
       <TextView
            android:id="@id/expandable_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="4dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:textSize="12sp"
            android:textColor="@android:color/white" />
    
        <ImageButton
            android:id="@id/expand_collapse"
            android:contentDescription="@string/app_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="1dp"
            android:layout_gravity="right|bottom"
            android:background="@android:color/transparent"/>
    
    
     </com.fiveytechnologies.bhagavadgita.views.ExpandableTextView>
    
    
    
    
    
    <!-- Rightend Duration -->
    <TextView
        android:id="@+id/duration"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignTop="@id/title"
        android:gravity="right"
        android:text="@string/slokacount"
        android:layout_marginRight="5dip"
        android:textSize="12sp"
        android:textColor="#10bcc9"
        android:textStyle="bold"
        android:visibility="gone"
        />
    
     <!-- Rightend Arrow -->
    
    Reviewed by vrvmadan at 2015-02-18 12:39
  • 6. Enable support for TextView expand/collapse toggle and custom Ids

    Added ability to choose the expand/collapse toggle view, currently ImageButton and TextView are supported, ImageButton is the default.

    Added support for custom Ids of the expandable TextView and expand/collapse toggle View.

    Reviewed by gergely-sallai at 2016-02-09 10:05
  • 7. Extra blank space when expanded inside RecyclerView

    Hi Manabu-GT, I am using a slightly modified version of your library, the only modification I did was to remove the drawable for expand and collapse and replace that with a TextView instead so that it shows Read More and Read Less testgif

    When I expand an item in the RecyclerView and scroll down and come back up, I find it collapsed, I also find extra blank spaces scattered everywhere, am I missing something? Also as per the GIF if you notice, it doesn't expand another time. Thanks for your suggestions in advance

    Reviewed by slidenerd at 2015-10-31 11:28
  • 8. Error:No such property: GROUP for class: org.gradle.api.publication.maven.internal.ant.DefaultGroovyMavenDeployer

    I resolved this by commenting // for maven central deployment //apply from: 'https://raw.githubusercontent.com/chrisbanes/gradle-mvn-push/master/gradle-mvn-push.gradle' in build.gradle of lib module

    Reviewed by Defuera at 2015-01-23 15:40
  • 9. Hard coded id in XML layout

    mTv = (TextView) findViewById(R.id.expandable_text);
    mButton = (ImageButton) findViewById(R.id.expand_collapse);
    

    These lines in findViews mean that the id for the children of ExpandableTextView must be expandable_text and expandand_collapse for the TextView and ImageButton respectively.

    I initially changed the ids in my XML layout and slammed into a null-pointer exception until i dug into the code. It will nice if this "limitation" is made known to users or better still, remove the hard coded ids. I can submit a pull request to remove the hard coded ids.

    Reviewed by tundebabzy at 2014-12-28 18:20
  • 10. please add clearAnimation to onAnimationEnd

    If you not clearAnimation after textview expand or collapse , the android system will call onMeasure infinite loop.

    add clearAnimation to onClick method.

    image

    thank you.

    I don't know if it will cause bug. I have test it and haven't found bug yet.

    Reviewed by com314159 at 2014-11-12 13:12
  • 11. How to hide the image button and create custom button?

    Hi, I want to remove the image button and add my custom button but it will crash, so I tried to hide the image button but this code is not working android: visibility="gone" . the image button will display even I added this code. So how to hide it?

    My custom button just displays a 'Read More' text and no image.

    Or I have to create 'read more' image for it? any other solution?

    <com.ms.square.android.expandabletextview.ExpandableTextView xmlns:android="http://schemas.android.com/apk/res/android"
                        xmlns:expandableTextView="http://schemas.android.com/apk/res-auto"
                        android:id="@+id/expand_text_view"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginTop="30dp"
                        expandableTextView:animDuration="200">
    
                        <TextView
                            android:id="@id/expandable_text"
                            android:layout_width="match_parent"
                            android:layout_height="wrap_content"
                            android:textColor="#666666"
                            android:textSize="16sp" />
    
                        <ImageButton
                            android:id="@id/expand_collapse"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:layout_gravity="left|bottom"
                            android:background="@android:color/transparent"
                            android:visibility="gone"
                            android:padding="16dp"
                            android:text="Read More"
                            android:textColor="@color/colorSweat"/>
                    </com.ms.square.android.expandabletextview.ExpandableTextView>
    
    Reviewed by tanwanjern at 2018-07-09 04:43
  • 12. Solution for "Text is not completely shown in Expanded State (Height Calculation Issue)"

    Incase of large text, the text isn't shown completely in expanded state. This is still a bug in the latest version of this repository as of today and needs to be fixed in the next release @Manabu-GT . For now, following is the solution explained clearly.

    SOLUTION

    In ExpandableTextView class, in the onMeasure method: Cut the line

           mTextHeightWithMaxLines = getRealTextViewHeight(mTv);
    

    and paste it right below this line

            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    

    Or for ease, you can directly replace your onMeasure method with the method below.

        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            // If no change, measure and return
            if (!mRelayout || getVisibility() == View.GONE) {
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                return;
            }
            mRelayout = false;
    
            // Setup with optimistic case
            // i.e. Everything fits. No button needed
            mToggleView.setVisibility(View.GONE);
            mTv.setMaxLines(Integer.MAX_VALUE);
    
            // Measure
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
            //--- Previously the mTextHeightWithMaxLines was initialized here ---//       
    
            // If the text fits in collapsed mode, we are done.
            if (mTv.getLineCount() <= mMaxCollapsedLines) {
                return;
            }
    
            // Doesn't fit in collapsed mode. Collapse text view as needed. Show
            // button.
            if (mCollapsed) {
                mTv.setMaxLines(mMaxCollapsedLines);
            }
            mToggleView.setVisibility(View.VISIBLE);
    
            // Re-measure with new setup
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    
           mTextHeightWithMaxLines = getRealTextViewHeight(mTv);
    
            if (mCollapsed) {
                // Gets the margin between the TextView's bottom and the ViewGroup's bottom
                mTv.post(new Runnable() {
                    @Override
                    public void run() {
                        mMarginBetweenTxtAndBottom = getHeight() - mTv.getHeight();
                    }
                });
                // Saves the collapsed height of this ViewGroup
                mCollapsedHeight = getMeasuredHeight();
            }
        } 
    

    This was also discussed in this issue here #5 but the solution wasn't explained clearly.

    Reviewed by harismuneer at 2020-09-10 19:39
  • 13. MaxLines on expanded TextView?

    I want to limit max lines when textview is expanded. But it seems it's not working?

    <com.ms.square.android.expandabletextview.ExpandableTextView
                    xmlns:expandableTextView="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/post_content"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/news_title_bg_color"
                    android:paddingStart="4dp"
                    android:paddingEnd="4dp"
                    expandableTextView:maxCollapsedLines="2"
                    expandableTextView:animDuration="200">
                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical"
                        android:orientation="horizontal">
                        <TextView
                            android:id="@id/expandable_text"
                            android:layout_width="0dp"
                            android:layout_weight="1"
                            android:maxLines="5"
                            android:layout_height="wrap_content"
                            android:textSize="12sp"
                            android:textColor="@color/colorDarkWhiteText"
                            android:textStyle="bold"/>
                        <ImageButton
                            android:id="@id/expand_collapse"
                            android:layout_width="20dp"
                            android:layout_height="20dp"
                            android:padding="2dp"
                            android:tint="@color/colorDarkWhiteText"
                            android:layout_gravity="center_vertical"
                            android:background="@android:color/transparent"/>
                    </LinearLayout>
                </com.ms.square.android.expandabletextview.ExpandableTextView>
    
    Reviewed by c0dehunter at 2020-03-24 02:27
  • 14. Not Compatible with AndroidX (Empty screen)

    The following sample code provided doesn't output anything on the screen or the studio live preview.

    Versions:

    • expandableTextView:0.1.4
    • gradle:3.5.0
    <com.ms.square.android.expandabletextview.ExpandableTextView xmlns:expandableTextView="http://schemas.android.com/apk/res-auto"
                    android:id="@+id/expand_text_view"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    expandableTextView:maxCollapsedLines="4"
                    expandableTextView:animDuration="200">
    
                    <TextView
                        android:id="@id/expandable_text"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="10dp"
                        android:layout_marginRight="10dp"
                        android:textSize="16sp"
                        android:text="asdkjbaskjda\nsadasdasdas\nasdasdasdasd\nasdasdasdas\nasdas\nadsas\nadsas"
                        android:textColor="#666666" />
    
                    <ImageButton
                        android:id="@id/expand_collapse"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:padding="16dp"
                        android:layout_gravity="end|bottom"
                        android:background="@android:color/transparent" />
                </com.ms.square.android.expandabletextview.ExpandableTextView>
    
    Reviewed by geekykant at 2019-12-13 09:27
  • 15. In the recyclerview, the expansion does not display the entire content correctly.

    According to debug, I think that the number of rows that get the textview is incorrect. The number of rows obtained before the super.onMeasure() method is correct (may be 0), but the number of rows obtained after this is less. Up ------------------------------Above from Google Translate, the following is the original---------------------- 根据debug,我认为是获取textview的行数不正确导致的,在super.onMeasure()方法之前获取到的行数是正确的(也可能是0),但是在这之后获取到的行数变少了

    Reviewed by qinxianyuzou at 2018-12-26 11:25
Androids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText.
Androids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText.

AnimatedEditText for Android This repository contains AnimatedEditText and TextDrawable all of which extend the behaviour of EditText and implement fe

May 17, 2022
A simple and flexible Checked TextView or Checkable TextView
A simple and flexible Checked TextView or Checkable TextView

CheckableTextView Checkable TextView [KOTLIN] ⚡ A simple and flexible Checked TextView or Checkable TextView written in Kotlin ⚡ What's New Animation

Apr 11, 2022
Mentions-TextView - Make Mentions and hashtags clickable in Textview
Mentions-TextView - Make Mentions and hashtags clickable in Textview

Mentions Textview Custome Textview with Mentions and hashtags being clickable. D

Jan 9, 2022
A library to show emoji in TextView, EditText (like WhatsApp) for Android
A library to show emoji in TextView, EditText (like WhatsApp) for Android

Discontinued This projected is discontinued. Please consider using other alternative, i.e EmojiCompat. Contact me if you want to continue working on a

May 11, 2022
A TextView that simulates the effect from the app Secret where the characters fade in/out at different speeds.
A TextView that simulates the effect from the app Secret where the characters fade in/out at different speeds.

SecretTextView A TextView that simulates the effect from the app Secret where the characters fade in/out at different speeds. How To Use Use it just l

Apr 16, 2022
Animation effects to text, not really textview
Animation effects to text, not really textview

HTextView Animation effects with custom font support to TextView see iOS Effects see Flutter Effects Screenshot type gif Scale Evaporate Fall Line Typ

May 19, 2022
A TextView that automatically resizes text to fit perfectly within its bounds.
A TextView that automatically resizes text to fit perfectly within its bounds.

AutoFitTextView A TextView that automatically resizes text to fit perfectly within its bounds. Usage dependencies { compile 'me.grantland:autofitt

May 17, 2022
Android experiment showing a sinking TextView
Android experiment showing a sinking TextView

Titanic is an Android experiment reproducing this effect.

May 8, 2022
A Custom TextView with trim text
A Custom TextView with trim text

ReadMoreTextView A Custom TextView with trim text Download To add the ReadMoreTextView library to your Android Studio project, simply add the followin

May 14, 2022
Advanced Android TextView

Advanced Android TextView Companion app for my Advanced Android TextView talk, demostrating: Animated CompoundDrawable Text shadow Custom font Non-bre

Apr 14, 2022
AutoLinkTextView is TextView that supports Hashtags (#), Mentions (@) , URLs (http://), Phone and Email automatically detecting and ability to handle clicks.
AutoLinkTextView is TextView that supports Hashtags (#), Mentions (@) , URLs (http://), Phone and Email automatically detecting and ability to handle clicks.

AutoLinkTextView Deprecated Please use the new version of AutoLinkTextView AutoLinkTextView is TextView that supports Hashtags (#), Mentions (@) , URL

May 7, 2022
Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the brand new Roboto Slab fonts.
Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the brand new Roboto Slab fonts.

Android-RobotoTextView Implementation of a TextView and all its direct/indirect subclasses with native support for the Roboto fonts, includes the bran

May 5, 2022
This is based on an open source autosizing textview for Android.

SizeAdjustingTextView This is based on an open source autosizing textview for Android I found a few weeks ago. The initial approach didn't resize mult

Feb 15, 2022
An extension of Android's TextView, EditText and Button that let's you use the font of your choice

AnyTextView (deprecated) Note: AnyTextView is no longer being maintained. I recommend replacing AnyTextView with the Calligraphy library instead. Frus

Mar 17, 2021
Form validation and feedback library for Android. Provides .setText for more than just TextView and EditText widgets. Provides easy means to validate with dependencies.
Form validation and feedback library for Android. Provides .setText for more than just TextView and EditText widgets. Provides easy means to validate with dependencies.

android-formidable-validation Form validation and feedback library for Android. Provides .setText for more than just TextView and EditText widgets. Pr

Apr 15, 2021
Simple way to create linked text, such as @username or #hashtag, in Android TextView and EditText
Simple way to create linked text, such as @username or #hashtag, in Android TextView and EditText

Simple Linkable Text Simple way to create link text, such as @username or #hashtag, in Android TextView and EditText Installation Gradle Add dependenc

Aug 27, 2020
Customized and Expandable TextView
Customized and Expandable TextView

Customized and Expandable TextView Simple library to change the Textview as rectangle, circle and square shapes by adding one line of code in xml file

Apr 7, 2022
Lightweight android library for highlighting sections of a textview, with optional callbacks.
Lightweight android library for highlighting sections of a textview, with optional callbacks.

Linker Lightweight android library for highlighting Strings inside of a textview (ignoring case), with optional callbacks. Language: Java MinSDK: 17 J

Apr 30, 2022
TextView to display simple HTML

Project stopped This project has been stopped. 4.0 is the last release. Feel free to fork this project and take over maintaining. HtmlTextView for And

May 17, 2022