Over the past two years, I have regularly come across articles and libraries that attempt to improve how underline text decorations are rendered on the web. The same problem exist on...

Moving where we handle insets to where our views live, layout filesIf you’ve watched my Becoming a Master Window Fitter talk, you’ll know that handling window insets can be complex. Recently...

Android Styling: Themes vs Styles

The Android styling system offers a powerful way to specify your app’s visual design, but it can be easy to misuse. Proper use of it can make themes and styles easier...

Working with dynamic data in MotionLayout

Can you use MotionLayout to create dynamic animations of data? That’s any data you don’t know about at compile time — like user input. Yes! Absolutely. You can use the MotionLayout...

Android Styling: Common Theme Attributes

?attr/shapeAppearanceSmallComponent used for Buttons, Chips, Text Fields etc. Defaults to rounded 4dp corners.?attr/shapeAppearanceMediumComponent used for Cards, Dialogs, Date Pickers etc. Defaults to rounded 4dp corners.?attr/shapeAppearanceLargeComponent used for Bottom Sheets etc. Defaults...

Android Styling: Prefer Theme Attributes

Theme attribute all the thingsIn the previous posts in this series on Android styling, we looked at the difference between themes and styles and why it’s a good idea to factor...

Android Styling: Themes Overlay

In previous articles in this series on Android styling, we’ve looked at the difference between styles and themes, talked about the benefits of using themes and theme attributes and highlighted some...