Jul 11, 2017

Android O – Autosizing TextViews

Introduction

Android O is coming. Right now in June, we’re in Release Preview 3 with an expected final release date of Q3. My guess for the dessert name is Oreo, but I haven’t been right on a single one so far. Android O feels more like a minor change with incremental improvements, similar to the change with Marshmallow to Nougat, as compared to the complete overhaul that KitKat to Lollipop felt like. That doesn’t mean some neat things aren’t being released in Android O, though! Here is the feature (with examples) of the new API change that I am most excited about.

Autosizing Textviews

I know what you’re thinking. Finally?! Right? No longer do you have to include a third party library in your project to achieve this functionality. This layout gist and accompanying java gist provides the following screenshot:

    There are three ways to setup an Autosizing TextView in your project: Default, Granularity, and Preset sizes. When using the Default  setting, this allows the TextView to uniformly scale along both the X and Y axis. This can be accomplished by adding the field

android:autoSizeTextType="uniform"

 

to your TextView.

When setting the Granularity property of your TextView, you set a range of minimum and maximum values, along with an incremental value, to determine how your TextView scales. An example of how to set this up in your TextView might look like this:

  android:autoSizeTextType="uniform"
  android:autoSizeMinTextSize="12sp"
  android:autoSizeMaxTextSize="100sp"
  android:autoSizeStepGranularity="2sp"

When using preset sizes with your TextView, you declare an array of sizes in your arrays.xml file and let your TextView know it should  scale according to the values listed in your arrays.xml file. A sample usage might look like:

<resources>
  <array
    name="text_view_sizes">
    <item>8sp</item>
    <item>12sp</item>
    <item>60sp</item>
    <item>100sp</item>
  </array>
</resources>

 

<TextView
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:autoSizeTextType="uniform"
  android:autoSizePresetSizes="@array/text_view_sizes"/>

Conclusion

Android O has a lot of really great API changes coming, including Autosizing Textviews, Font declaration in XML, Unified layout margin and padding, and many other changes. Most of these changes will not be noticeable to the user, but they will certainly make a developer’s life easier.

 

About the Author

Object Partners profile.
Leave a Reply

Your email address will not be published. Required fields are marked *

Related Blog Posts
Using Conftest to Validate Configuration Files
Conftest is a utility within the Open Policy Agent ecosystem that helps simplify writing validation tests against configuration files. In a previous blog post, I wrote about using the Open Policy Agent utility directly to […]
SwiftGen with Image & Color Asset Catalogs
You might remember back in 2015 when iOS 9 was introduced, and we were finally given a way to manage all of our assets in one place with Asset Catalogs. A few years later, support […]
Tracking Original URL Through Authentication
If you read my other post about refreshing AWS tokens, then you probably have a use case for keeping track of the original requested resource while the user goes through authentication so you can route […]
Using Spring Beans in a Kafka Streams ExceptionHandler
There are many things to know before diving into Kafka Streams. If you haven’t already, check out these 5 things as a starting point. Bullet 2 mentions designing for exceptions. Ironically, this seems to be […]