:page_facing_up: Android Text Full Jusiftication / Wrapping / Justify / Hyphenate - V2.0

Last update: May 9, 2022

LIBRARY IS NO LONGER MAINTAINED

If you want to adopt + maintain this library, please drop me a message - [email protected]

Gittip Android Arsenal Build Status Maven Central
Logo

Android Full Justification

About

This library will provide you a way to justify text. It supports both plain text and Spannables. Additionally, the library can auto-hyphentate your displayed content (thanks to @muriloandrade).

Compatible for Android 2.2 to 5.X

Other Libraries

Screenshot

Preview

Demo

Imgur

#Recent 01/11/2015 ► Added support for very long documents with fading and progress listener
01/10/2015 ► Refractored / renamed classes
01/04/2015 ► Improved caching support which allows for smooth scrolling
01/02/2015 ► Added XML attributes for DocumentView

Wiki

For examples, tests, and API refer to the Android-TextJustify Wiki.

Install

Just add to your build.gradle

dependencies {
    compile 'com.github.bluejamesbond:textjustify-android:2.1.6'
}

Known Issues

Status Issues
CLOSED Scroll caching for very large documents i.e. > 4000 paragaphs
OPEN Add letter-spacing feature like CSS
OPEN Improve text strike-through
OPEN Improve text underline
CLOSED Support more features like TextView in terms of Paint settings

GitHub

https://github.com/mathew-kurian/TextJustify-Android
Comments
  • 1. Setting text with spannable, wont update unless i click and drag on textview

    private Spannable highlightString(String original, String search) {
        String rep = original;
        String newS = rep.replace(search, "<font color='red'>" + search + "</font>");
        ArticleBuilder amb = new ArticleBuilder();
        amb.append(
                newS
                , false, new RelativeSizeSpan(1f), new JustifiedSpan()
        );
        return amb;
        }
    

    I am setting the text of my document view using the above which results in:

    http://puu.sh/fepY7/a2edfbad2a.png

    However, when i select a new line to highlight, NOTHING happens, setting the text view to ANY content, normal spannable string or otherwise, the view refuses to update, the only way i can get it to show the new value is to tap and drag on the view, how peculiar?

    Thanks!

    Reviewed by broakenmedia at 2015-01-30 13:19
  • 2. DocumentView in a row item of ListView is not triggering ListView.OnItemClick listener

    Hi, I'm having some problems when using DocumentView in a row item, it makes the whole row item not clickable. I fixed this by android:descendantFocusability="blocksDescendants" on the RelativeLayout. The problem however is that selecting the DocumentView does not select the Row Item, unlike using a normal TextView does. Clicking outside the DocumentView does indeed trigger the Row Item. What I want to achieve is that clicking the DocumentView, selects the Row Item similar to how it works when I use a normal TextView. Is this an ongoing issue or I'm doing something wrong?

    I'll be attaching my layout if that helps. screen shot 2015-01-24 at 10 12 29 am

    Reviewed by polcham at 2015-01-24 02:13
  • 3. Library not clear

    To be honest, i've spent hours trying to find a way to make use of this library and to attached it to view.. it was so difficult, can you help on how?

    I want to make use of ArticleBuilder(), so how do i make reference to view where i have this --> <com.bluejamesbond.text.DocumentView xmlns:document="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="+id/instruction" />

    here is my java code

        a = new ArticleBuilder();
        a.append("WHO: Ebola Cases",
                false, new RelativeSizeSpan(2f), new StyleSpan(Typeface.BOLD))
                .append("<font color=0xFFC801>Sam Frizell</font><font color=0x888888> @Sam_Frizell  Oct. 25, 2014</font>",
                        false, new RelativeSizeSpan(0.8f), new StyleSpan(Typeface.BOLD))
                .append("In New York and New Jersey, governors Andrew Cuomo and Chris Christie have implemented controversial quarantines on all healthcare workers returning from West Africa after a doctor returning from Guinea contracted the disease and was diagnosed in New York.",
                        true, new RelativeSizeSpan(1f), new JustifiedSpan());
    
        DocumentView documentView = new DocumentView(getActivity(), R.id.instruction);  // Support spanned text
        documentView.setText(a); // Set to `true` to enable justification
    

    Doing it this way generate error

    Process: com.samsoft.cbc.studio, PID: 2834
    java.lang.NullPointerException
            at com.bluejamesbond.text.DocumentView$MeasureTask.onPostExecute(DocumentView.java:729)
            at com.bluejamesbond.text.DocumentView$MeasureTask.onPostExecute(DocumentView.java:685)
            at android.os.AsyncTask.finish(AsyncTask.java:632)
            at android.os.AsyncTask.access$600(AsyncTask.java:177)
            at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5017)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
            at dalvik.system.NativeStart.main(Native Method)
    

    Any Solution on how to relate the view and the java code together, if i'm not doing it right.. please let me know. Thanks

    Reviewed by samsoft00 at 2015-01-15 05:22
  • 4. Problem in option 2

    I have problem this is link http://stackoverflow.com/questions/21202560/justify-text-in-textview-not-working-properly I have asked this question on stackoverflow but no one answer me.

    Reviewed by john2112 at 2014-01-20 04:55
  • 5. Khmer not support

    Thank you so much for you library it is very helpful, but I got the problem when I use it with Khmer unicode. it doesn't working well. Can you please help me to to finger-out this problem. Thank you. Bunthoeun

    screen shot 2015-01-19 at 2 55 13 pm screenshot_2015-01-19-15-04-37

    Reviewed by bpbunthoeun at 2015-01-19 08:06
  • 6. Upload to maven central?

    Are you planning to upload this neat library to Maven Central? It would certainly make it more accessible for new developers to include the project with a one-liner in their gradle config. :)

    Reviewed by ened at 2014-11-28 06:34
  • 7. Spacing between words

    Justify text working on every device. But in some lines spacing between words fine and in some lines so much spacing. So extra spacing not looks good. Any solution for this?

    Reviewed by john2112 at 2014-02-11 05:09
  • 8. Hyphenation

    Hi, I saw you made some amazing improvements in the new version of TextJustify, including the hyphenation, congratulations.

    Now I’m trying to implement this new version into my project but I’m facing an issue.

    If I right understand, the new way to get texts hyphenatated is:

    docView.getDocumentLayoutParams().setHyphenator(new Hyphenator(HyphenPattern.PT));
    docView.getDocumentLayoutParams().setHyphenated(true);
    

    This way, nothing happens, seems like LayoutParams.setHyphenator() method will always just return (without set). So I made some changes in this method and have the hyphenator settled.

    But now, I’m facing an Exception:

    java.util.ConcurrentModificationException at java.util.LinkedList$LinkIterator.next(LinkedList.java:124) at com.bluejamesbond.text.DocumentLayout.measure(DocumentLayout.java:222) at com.bluejamesbond.text.DocumentView.onMeasure(DocumentView.java:142) …

    Let me know if you need more details. Thank you.

    Reviewed by muriloandrade at 2014-12-21 11:05
  • 9. Spannable TextView with different colors

    Given the following program:

    TextViewEx textView = (TextViewEx) findViewById(R.id.textView1); textView.setText("", true); Spannable span = Spannable.Factory.getInstance().newSpannable("Hello "); span.setSpan(new ForegroundColorSpan(Color.RED), 0, span.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span = Spannable.Factory.getInstance().newSpannable(" world!"); span.setSpan(new ForegroundColorSpan(Color.GREEN), 0, span.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    The output text is printed without any red or green color. Is there any way to solve the justifying of a TextViewEx with different styles?

    Reviewed by andresgr at 2014-04-01 08:10
  • 10. Library is a memory hog

    I have done some simple testing of the memory resources of this app and the standard TextView implementation. I only used this app for justification purposes.

    This libary, used to replace just one TextView, eats up 15MB of memory. This seems like a lot extra. While there might not be much that you can do, you might be able to make a light-version of this library that focuses on the simple use-cases your library is can be used for - like just justifing text.

    Reviewed by ciscorucinski at 2015-08-09 16:16
  • 11. Text inside ScrollView not reaching to the end

    When you put the TextViewEx inside a ScrollVIew the scroller doesnt show complete text, it leaves some behind, its like its not calculating the height properly.

    This is the beggining of the textViewEx screenshot 2014-05-03 17 03 00

    This is the bottom, and the scroller its maxed out, and as you can see some of the text is missing. screenshot 2014-05-03 17 03 18

    Reviewed by ghost at 2014-05-03 23:02
  • 12. Pagination

    What's done:

    • Add pagination support
    • Add long formatted paginated text example
    • Fix some common library bugs

    Known bugs:

    • On switch orientation, text draw failed with IndexOutOfBoundsException
    • Pagination works correctly only if cacheConfig == CacheConfig.NO_CACHE
    Reviewed by Nikita-Boyarskikh at 2018-05-23 17:50
  • 13. bug: java.lang.IllegalArgumentException: width and height must be > 0

    It does not always happen, sometime when giving compilation

    log

                                         java.lang.IllegalArgumentException: width and height must be > 0
                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:829)
                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:808)
                                             at android.graphics.Bitmap.createBitmap(Bitmap.java:775)
                                             at com.bluejamesbond.text.DocumentView$CacheBitmap.<init>(DocumentView.java:809)
                                             at com.bluejamesbond.text.DocumentView.allocateResources(DocumentView.java:632)
                                             at com.bluejamesbond.text.DocumentView.onMeasure(DocumentView.java:477)
                                             at android.view.View.measure(View.java:18805)
                                             at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
                                             at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at android.support.v7.widget.CardView.onMeasure(CardView.java:218)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                             at android.view.View.measure(View.java:18805)
                                             at android.support.v4.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1446)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at android.support.v4.widget.NestedScrollView.onMeasure(NestedScrollView.java:512)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at android.view.View.measure(View.java:18805)
                                             at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)
                                             at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714)
                                             at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:91)
                                             at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1361)
                                             at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:784)
                                             at android.view.View.measure(View.java:18805)
                                             at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1060)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
                                             at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
                                             at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
                                             at android.view.View.measure(View.java:18805)
                                             at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)
                                             at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
                                             at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
                                         	at android.view.V
    java.lang.illegalargumentexception: width and height must be > 0                                         at android.graphics.Bitmap.createBitmap(Bitmap.java:829)                                         at android.graphics.Bitmap.createBitmap(Bitmap.java:808)                                         at android.graphics.Bitmap.createBitmap(Bitmap.java:775)                                         at com.bluejamesbond.text.DocumentView$CacheBitmap.<init>(DocumentView.java:809)                                         at com.bluejamesbond.text.DocumentView.allocateResources(DocumentView.java:632)                                         at com.bluejamesbond.text.DocumentView.onMeasure(DocumentView.java:477)                                         at android.view.View.measure(View.java:18805)                                         at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)                                         at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at android.support.v7.widget.CardView.onMeasure(CardView.java:218)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)                                         at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)                                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)                                         at android.view.View.measure(View.java:18805)                                         at android.support.v4.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1446)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at android.support.v4.widget.NestedScrollView.onMeasure(NestedScrollView.java:512)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at android.view.View.measure(View.java:18805)                                         at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:716)                                         at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:462)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:714)                                         at android.support.design.widget.HeaderScrollingViewBehavior.onMeasureChild(HeaderScrollingViewBehavior.java:91)                                         at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild(AppBarLayout.java:1361)                                         at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:784)                                         at android.view.View.measure(View.java:18805)                                         at android.support.v4.widget.DrawerLayout.onMeasure(DrawerLayout.java:1060)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:139)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)                                         at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)                                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)                                         at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)                                         at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)                                         at android.view.View.measure(View.java:18805)                                         at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5952)                                         at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)                                         at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)                                     at android.view.V
    
    Reviewed by webserveis at 2017-11-24 13:50
  • 14. Report crash .onMeasure

    I recive this report in one app:

    Huawei P8 Lite (hwALE-H), 2048MB RAM, Android 6.0

    java.lang.IllegalArgumentException: at android.graphics.Bitmap.createBitmap (Bitmap.java:850) at android.graphics.Bitmap.createBitmap (Bitmap.java:829) at android.graphics.Bitmap.createBitmap (Bitmap.java:796) at com.bluejamesbond.text.DocumentView$CacheBitmap.<init> (SourceFile:809) at com.bluejamesbond.text.DocumentView.allocateResources (SourceFile:632) at com.bluejamesbond.text.DocumentView.onMeasure (SourceFile:477) at android.view.View.measure (View.java:18930) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at android.support.v7.widget.CardView.onMeasure (SourceFile:218) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1486) at android.widget.LinearLayout.measureVertical (LinearLayout.java:765) at android.widget.LinearLayout.onMeasure (LinearLayout.java:647) at android.view.View.measure (View.java:18930) at android.support.v4.widget.NestedScrollView.measureChildWithMargins (SourceFile:1446) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at android.support.v4.widget.NestedScrollView.onMeasure (SourceFile:512) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at android.view.View.measure (View.java:18930) at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:715) at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:461) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.support.design.widget.CoordinatorLayout.onMeasureChild (SourceFile:714) at android.support.design.widget.j.onMeasureChild (SourceFile:91) at android.support.design.widget.AppBarLayout$ScrollingViewBehavior.onMeasureChild (SourceFile:1361) at android.support.design.widget.CoordinatorLayout.onMeasure (SourceFile:784) at android.view.View.measure (View.java:18930) at android.support.v4.widget.DrawerLayout.onMeasure (SourceFile:1060) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at android.support.v7.widget.ContentFrameLayout.onMeasure (SourceFile:139) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1486) at android.widget.LinearLayout.measureVertical (LinearLayout.java:765) at android.widget.LinearLayout.onMeasure (LinearLayout.java:647) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1486) at android.widget.LinearLayout.measureVertical (LinearLayout.java:765) at android.widget.LinearLayout.onMeasure (LinearLayout.java:647) at android.view.View.measure (View.java:18930) at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:5976) at android.widget.FrameLayout.onMeasure (FrameLayout.java:194) at com.android.internal.policy.PhoneWindow$DecorView.onMeasure (PhoneWindow.java:2705) at android.view.View.measure (View.java:18930) at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:2154) at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:1248) at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1484) at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1139) at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:6238) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:884) at android.view.Choreographer.doCallbacks (Choreographer.java:696) at android.view.Choreographer.doFrame (Choreographer.java:631) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:870) at android.os.Handler.handleCallback (Handler.java:743) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:150) at android.app.ActivityThread.main (ActivityThread.java:5621) at java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:794) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:684)

    Reviewed by webserveis at 2017-11-13 10:34
  • 15. Image Span test does not work

    Hi , thanks for sharing this library,but I was confronted with a strange issue,

    After running your example, I sound some feature did not work ,like BackgroundSpan ,ImageSpan, did you consider to make another release version to fix these features?
    Thanks a lot!

    Reviewed by Berlin-newbee at 2017-08-28 02:58
RTL marquee text view android right to left moving text - persian - farsi - arabic - urdo
RTL marquee text view android right to left moving text - persian - farsi - arabic - urdo

RTL marquee text view android right to left moving text - persian - farsi - arabic - urdo

Feb 14, 2022
Android Full Justification
Android Full Justification

This library will provide you a way to justify text. It supports both plain text and Spannables. Additionally, the library can auto-hyphentate your displayed content

May 9, 2022
RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android.
RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android.

RichEditor for Android is a beautiful Rich Text WYSIWYG Editor for Android. Looking for iOS? Check out cjwirth/RichEditorView Supported Functions Bold

May 17, 2022
MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.
MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.

MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.

May 12, 2022
Android form edit text is an extension of EditText that brings data validation facilities to the edittext.
Android form edit text is an extension of EditText that brings data validation facilities to the edittext.

Android Form EditText Android form edit text is an extension of EditText that brings data validation facilities to the edittext. Example App I built a

May 7, 2022
[DISCONTINUED] Rrich text editor for android platform. 安卓富文本编辑器,暂停维护

icarus-android Maybe the best rich text editor on android platform. Base on Simditor Features Alignment (left/center/right) Bold Blockquote Code Horiz

Apr 20, 2022
Android library contain custom realisation of EditText component for masking and formatting input text
Android library contain custom realisation of EditText component for masking and formatting input text

Masked-Edittext Masked-Edittext android library EditText widget wrapper add masking and formatting input text functionality. Install Maven <dependency

May 14, 2022
An address-autocompleting text field for Android
An address-autocompleting text field for Android

android-PlacesAutocompleteTextView An AutocompleteTextView that interacts with the Google Maps Places API to provide location results and caches selec

Feb 4, 2022
Chips EditText, Token EditText, Bubble EditText, Spannable EditText and etc.. There are many names of this control. Here I develop easy to understand , modify and integrate Chips Edit Text widget for Android
Chips EditText, Token EditText, Bubble EditText, Spannable EditText and etc.. There are many names of this control. Here I develop easy to understand , modify and integrate Chips Edit Text widget for Android

Chips EditText Library Chips EditText, Token EditText, Bubble EditText, Spannable EditText and etc.. There are many names of this control. Here I deve

Mar 26, 2022
AutosizeEditText for Android is an extension of native EditText that offer a smooth auto scale text size.
AutosizeEditText for Android is an extension of native EditText that offer a smooth auto scale text size.

AutoscaleEditText AutosizeEditText for Android is an extension of native EditText that offer a smooth auto scale text size. Latest Version How to use

Apr 21, 2022
Add text masking functionality to Android EditText. It will prevent user from inserting not allowed signs, and format input as well.
Add text masking functionality to Android EditText. It will prevent user from inserting not allowed signs, and format input as well.

MaskFormatter MaskFormatter adds mask functionality to your EditText. It will prevent user from inserting not allowed signs, and format input as well.

Apr 24, 2022
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
Markdown Text for Android Jetpack Compose 📋.

Markdown Text for Android Jetpack Compose ??.

May 12, 2022
Dealing with Android Text by simple way to get high performance.
Dealing with Android Text by simple way to get high performance.

Gapo Android RichText RichText supports Hashtag, Mention, Url, Phone Number, Email, Markdown, Custom Span, SeeMore/SeeLess by limited line or length,

Oct 20, 2021
Android Custom View for prevent the view behind on-screen keyboard when edit text is focused
Android Custom View for prevent the view behind on-screen keyboard when edit text is focused

Group Focusable Prevent the view behind on-screen keyboard when edit text is focused in Android UI Download Gradle implementation 'com.akexorcist:grou

Jan 24, 2022
Dealing with Android Text by simple way to get high performance.
Dealing with Android Text by simple way to get high performance.

Gapo Android RichText RichText supports Hashtag, Mention, Url, Phone Number, Email, Markdown, Custom Span, SeeMore/SeeLess by limited line or length,

Oct 20, 2021
A simple Android library to protect part of text using Span
A simple Android library to protect part of text using Span

Text Protector A simple Android library to "protect" part of text using Span What is this? This is a small library for replacing part of a text in a T

May 16, 2022
Light-weighted, convenient implementation of expandable text view that supports expanding & collapsing animations for Android projects

ExpandableTextView Light-weighted, convenient implementation of expandable text view that supports expanding & collapsing animations for Android proje

May 9, 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