TextLayoutBuilder

Introduction: An Android library that allows you to build text layouts more easily.
More: Author   ReportBugs   OfficialWebsite   
Tags:

Build text Layouts easily on Android.

Features

  • Create text Layouts easily.
  • Reuse builders to create similarly styled Layouts.
  • Cache Layouts of commonly used strings.
  • Improve performance by warming up the FreeType cache.

Download

If using Gradle, add this to your build.gradle:

compile 'com.facebook.fbui.textlayoutbuilder:textlayoutbuilder:1.7.0'

or, if using Maven:

<dependency>
  <groupId>com.facebook.fbui.textlayoutbuilder</groupId>
  <artifactId>textlayoutbuilder</artifactId>
  <version>1.7.0</version>
  <type>aar</type>
</dependency>

Usage

  1. Set the properties on the TextLayoutBuilder:

    TextLayoutBuilder builder = new TextLayoutBuilder()
       .setText("TextLayoutBuilder makes life easy")
       .setTextColor(Color.BLUE)
       .setWidth(400 /*, MEASURE_MODE_EXACTLY */);
    
  2. Call build() on the builder to get a Layout:

    Layout layout = builder.build();
    
  3. Use the Layout in your code:

    public class CustomView extends View {
       private Layout layout;
    
       public CustomView(Context context) {
           super(context);
       }
    
       public void setLayout(Layout layout) {
           this.layout = layout;
       }
    
       @Override
       protected void onDraw(Canvas canvas) {
           super.onDraw(canvas);
    
           // Draw the layout.
           layout.draw(canvas);
       }
    }
    

Additional Usage

  1. Cache the layouts for commonly used strings by turning on caching in the TextLayoutBuilder.

    textLayoutBuilder.setShouldCacheLayout(true);
    
  2. Glyph warming provides significant performance boost for large blurbs of text. Turn this on and pass in a GlyphWarmer for the TextLayoutBuilder.

    textLayoutBuilder
       .setShouldWarmText(true)
       .setGlyphWarmer(new GlyphWarmerImpl());
    
  3. Import a style defined in XML into a TextLayoutBuilder object.

    ResourceTextLayoutHelper.updateFromStyleResource(
       textLayoutBuilder, // builder object
       context,           // Activity context
       resId);            // style resource id
    

License

TextLayoutBuilder is Apache-2-licensed.

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools