* [TextFields] Full width changes. (#2590) * [TextFields] Propagating changes to themers. (#2585) * [TextFields] Propagating changes to themers. * [TextFields] Updates to themer examples. * [TextFields] Base controller class files (#2582) * [TextFields] New Base class files. * [TextFields] Naming corrections. * [TextFields] Formatting. * [TextFields] Replacing -Default with -Underline (#2583) * [TextFields] Adding underline controller. * [TextFields] Changes to umbrella import file and removing default controllers. * [TextFields] Renaming one file. * [TextFields] Updated controller headers. (#2584) * [TextFields] Updating examples. (#2586) * [TextFields] Running clang-format on the elements. (#2587) * [TextFields] Running format on the element itself. * [TextFields] Minor formatting. * [TextFields] Updating tests and formatting. (#2588) * [TextFields] Filled controller changes. (#2589) * [TextFields] Legacy controller comments, naming, and formatting. (#2591) * [TextFields] Legacy controller comments, naming, and formatting. * [TextFields] Adding safety to legacy default init. * [TextFields] Adding safety to Legacy Default init. * [TextFields] Formatting Legacy Default. * [TextFields] Formatting Legacy Full Width. * [TextFields] Text area comments, updated super, naming, formatting. (#2593) * [TextFields] Text area updates. * [TextFields] Clarifying comment. * [TextFields] Outline changes and formatting. (#2592) * [TextFields] Updates to styling doc. (#2594) * [TextFields] Updates to styling doc. * [TextFields] Updating doc. * [TextFields] Full width comments, safety, formatting, and underline support. (#2633) * [TextFields] Adding safety to full width. * [TextFields] Formatting Full Width. * [TextFields] PR feedback. * [TextFields] Safety in init of Base (#2632) * [TextFields] Adding safety to base init. * [TextFields] Formatting Base. * [TextFields] Updates to controller header. (#2636) * [TextFields] Updates to controller header. * [TextFields] Updating misleading comments. * [TextFields] Supplemental file name changes. (#2635)
Text field styles
MDC's text fields are designed to be styled by controllers implementing the MDCTextInputController protocol. The following controllers are included in the text field component and each one is highly customizable to express your app's branding and styling.
Some of the classes are marked as "Preferred". These are known, through extensive UX research, to have big performance gains in usability.
There's also a class called MDCTextInputControllerBase. It's meant to be used as a super-class for controllers that want default floating placeholder behavior with minimal customization. Several other controllers inherit from it.
Two of the classes include "Legacy" in their names. They are included to support older designs and avoid breaking changes that come from the size of newer styles.
MDCTextInputControllerOutlined (Preferred)
- Stroked border
- Border-crossing, floating placeholder
- No fill
Notes:
This class is intended for singleline text fields only. For a visually compatible multiline controller, use MDCTextInputControllerOutlinedTextArea.
MDCTextInputControllerFilled (Preferred)
- Optional stroked border / underline
- Floating placeholder
- Colored fill
MDCTextInputControllerOutlinedTextArea (Preferred)
- Stroked border
- Border-crossing, floating placeholder
- No fill
Notes:
This class is intended for multiline text fields only. For a visually compatible singleline controller, use MDCTextInputControllerOutlined.
MDCTextInputControllerUnderline
- Underline
- Optional floating of placeholder (default is to float)
- No fill
- "Classic" early Material Design look
MDCTextInputControllerFullWidth
- No border / underline
- Inline placeholder
- Optional fill
- No leading underline label
- Trailing underline label is inline with placeholder
MDCTextInputControllerLegacyDefault
- Underline
- Optional floating of placeholder (default is to float)
- No fill
- "Classic" early Material Design look
- Legacy clear button (X)
Notes:
This class has different layout behavior and sizing than MDCTextInputControllerDefault but is included for backward compatibility.
MDCTextInputControllerLegacyFullWidth
- No border / underline
- Inline placeholder
- Optional fill
- No leading underline label
- Trailing underline label is inline with placeholder
- Legacy clear button (X)
Notes:
This class has different layout behavior and sizing than MDCTextInputControllerFullWidth but is included for backward compatibility.




