Just Another Day in Android-land: Expandable TextView with Custom Ellipsis

August 26, 2013

After over 4 months of my first notorious “death march” our team can at last have life. I finally have time to write a custom component for my future use. It is a customized TextView with a few customization on the function that trim down excessive characters. Suppose the UI can only display a limited lines of characters by specifying android:maxLine attribute, The TextView can be clicked to show the whole text. Also the ellipsis (…) at the end of the text while trimmed, aka ellipsized, can be customized.

The custom component has the following requirements:

The TextView Ellipsis must support different text size. This is proven a tricky part as you all know, there is gazillion different screen size, View size … for the UI component, how can we measure the width of the UI component and width of the text and decide what text to show? After searching the help from the omnipotent of Android framework GrepCode, I found out some of the hidden gem of a utility class: TextUtils. The TextUtils can do ellipsize based on the TextPaint class. The TextPaint hold the display attribute, for example width and height of the text itself, this is a good example for separation of concern if your are new to OOP.

Also as TextView uses the private variable mMaxLine to hold the maximum number of line to be display, I must make use of Reflection API (again!) to change the value.

And the result is here. Enjoy!

Just Another Day in Android-land: Expandable TextView with Custom Ellipsis - August 26, 2013 - Gilbert Wat (屈振鵬)