-
Notifications
You must be signed in to change notification settings - Fork 6.2k
Design Support Library
At its I/O 2015 conference, Google announced the Design Support Library, which brought a lot of material design components — including a navigation drawer view, floating labels, floating action buttons, snackbars, and a framework to tie motion and scroll events — to Android apps. In 2018 that library was superseded by Material Components for Android (com.google.android.material:material) as part of the AndroidX migration, and this page now covers the successor library. The pre-AndroidX com.android.support:design artifact ended at version 28.0.0 and should no longer be used.
Compose-first note: As announced at Google I/O 2026, the View-based Material Components for Android library is in maintenance mode — there are no more planned feature releases, and Google now recommends Jetpack Compose with Compose Material 3 (
androidx.compose.material3:material3) for new UI work. The Views library still receives maintenance releases and remains the correct dependency for existing View-based apps like the ones covered in these guides.
The Material Components library provides the following key components:
- FloatingActionButton - A round button at the bottom right denoting a primary action on your interface. Promoting key actions within a modern material design app.
-
TabLayout - An easier way to put tabs around a
ViewPagerwhich acts as sliding tabs between fragments within an app. - NavigationView - An easier way to provide a modern navigation drawer from the left with a header and a series of navigation items.
- SnackBar - Shown on the bottom of the screen and contains text with an optional single action. They automatically time out after the given time length by animating off the screen.
- TextInputLayout - Float the hint above any text field as the user is entering information and/or add a character counter.
-
CoordinatorLayout - Provides an additional level of control over scroll and touch events between child views.
- AppBarLayout allows your toolbar and other views to react to scroll events.
- CollapsingToolbarLayout extend this to allow the toolbar to collapse as the user scrolls through a view.
- Bottom Sheets to expose a sheet of material that slides up from the bottom of the screen.
- Bottom Navigation Views for easily switching from 3 to 5 tabbed items.
- Vector Drawables to reduce the need to include images for every density size.
Note that CoordinatorLayout and vector drawable support ship as separate AndroidX libraries (androidx.coordinatorlayout and androidx.vectordrawable) that the Material Components library depends on.
Make sure the repositories section of your build configuration includes Google's Maven repository google() and mavenCentral():
repositories {
google()
mavenCentral()
}The Material Components library depends on the AndroidX AppCompat library. If your project still uses the pre-AndroidX support libraries, check out this migration guide. Per the library's getting started guide, current releases require compileSdkVersion 35 or later and minSdkVersion 21 or later:
android {
compileSdkVersion 35
}Add these dependencies to your app/build.gradle file:
dependencies {
implementation 'androidx.appcompat:appcompat:1.7.1'
implementation 'com.google.android.material:material:1.14.0'
}Check Google's Maven repository for the latest version of the library. Your activities should extend AppCompatActivity, and your app theme should inherit from a Theme.Material3.* parent (version 1.5.0 or later) to get the current Material 3 component styles — see the Styles and Themes guide.
If you are using the RecyclerView, CardView, or any other external dependencies make sure to update them. The RecyclerView for instance has features that are used with the Material Components library.
dependencies {
implementation 'androidx.recyclerview:recyclerview:1.4.0'
}Vector drawables are rasterized at compile time into PNG assets for very old devices by default. Since the Material Components library requires minSdkVersion 21 or later — and vector drawables are natively supported from API 21 — new projects generally need no extra configuration. If you support a legacy project, you can enable the AndroidX vector drawable support explicitly:
android {
defaultConfig {
vectorDrawables.useSupportLibrary = true
}
}The AndroidX libraries can also be added explicitly if needed:
dependencies {
implementation 'androidx.vectordrawable:vectordrawable:1.2.0' // VectorDrawableCompat
implementation 'androidx.vectordrawable:vectordrawable-animated:1.2.0' // AnimatedVectorDrawableCompat
}Check out the vector drawables guide for usage details.
The Transitions API was first introduced in Android 4.4 (KitKat) and the AndroidX library back-ports view-hierarchy animations to earlier releases. To use this library, you need to add it explicitly:
dependencies {
implementation 'androidx.transition:transition:1.7.0'
}To leverage the annotations library, you can also explicitly add it to your Gradle file. Adding the AppCompat or Material Components library implicitly adds it:
dependencies {
implementation 'androidx.annotation:annotation:1.10.0'
}Earlier revisions of this page covered PercentRelativeLayout and PercentFrameLayout from the percent support library. That library is deprecated — use ConstraintLayout for percentage-based dimensions and complex layouts instead.
If you want to see how the various components come together, check out the Material Components catalog app, which showcases every component in the library. The older cheesesquare sample demonstrates the original design support library patterns but uses the outdated pre-AndroidX support library — check the migration guide if you want to copy code from it.
For changes and the latest versions of the library, visit the official releases page. For the AndroidX libraries, see the versions page. Remember that AndroidX and com.google.android.material replaced all of the old support libraries.
- https://github.com/material-components/material-components-android
- https://github.com/material-components/material-components-android/blob/master/docs/getting-started.md
- https://developer.android.com/jetpack/androidx
- https://developer.android.com/jetpack/androidx/migrate
- https://android-developers.googleblog.com/2018/05/hello-world-androidx.html
- https://m3.material.io/develop/android/mdc-android
- https://android-developers.googleblog.com/2015/05/android-design-support-library.html
Created by CodePath with much help from the community. Contributed content licensed under cc-wiki with attribution required. You are free to remix and reuse, as long as you attribute and use a similar license.
Finding these guides helpful?
We need help from the broader community to improve these guides, add new topics and keep the topics up-to-date. See our contribution guidelines here and our topic issues list for great ways to help out.
Check these same guides through our standalone viewer for a better browsing experience and an improved search. Follow us on twitter @codepath for access to more useful Android development resources.