Skip to content

Navigation drawer ​

Navigation drawers let people switch between UI views on larger devices. Navigation drawers provide access to destinations in your app.

Overview · Specs · Guidelines · Accessibility

Note

The navigation drawer is no longer recommended in the Material 3 Expressive update. For those who have updated, use an expanded navigation rail, which has mostly the same functionality of the navigation drawer and adapts better across breakpoints.

Navigation drawer diagram numbering 7 elements

  1. Container
  2. Headline
  3. Label text
  4. Active indicator
  5. Badge label text
  6. Scrim
  7. Icon

Tokens & specs ​

The navigation drawer has one token set. Learn about design tokens

Design tokens

Token table

Machine-readable relationship table

Navigation drawer tokens · 1 token set · 67 tokens · live token table · DSDB TOKEN_TABLE.376969f91547be8e

  • Default context: Theme: Light · Platform: Android · Audience: 3P · Font: Static · Contrast: Default · iOS dark theme elevation: None · iOS weight setting: Default
  • Not configurable here (group default used): Motion scheme: Standard · Language height: Small
  • Other contexts: Theme: Dark · Contrast: Medium contrast, High contrast. "Other contexts" lists values that differ from the default when only that one context changes.
  • Reference chain: aliases from the token to its source value (token → alias → … → value). "—" means the token holds a literal value.

Navigation drawers (baseline) · md.comp.navigation-drawer · 67 tokens

For the baseline navigation drawer. For expressive, use the expanded nav rail instead `md.comp.nav-rail.expanded`.

GroupTokenTypeReference chainResolved valueOther contexts
Enabled › Containermd.comp.navigation-drawer.container.color (deprecated)Colormd.sys.color.surface → md.ref.palette.neutral98#FEF7FFDark: #141218 via md.ref.palette.neutral6
Enabled › Containermd.comp.navigation-drawer.modal.container.colorColormd.sys.color.surface-container-low → md.ref.palette.neutral96#F7F2FADark: #1D1B20 via md.ref.palette.neutral10
Enabled › Containermd.comp.navigation-drawer.standard.container.colorColormd.sys.color.surface → md.ref.palette.neutral98#FEF7FFDark: #141218 via md.ref.palette.neutral6
Enabled › Containermd.comp.navigation-drawer.container.surface-tint-layer.color (deprecated)Colormd.sys.color.surface-tint → md.sys.color.primary → md.ref.palette.primary40#6750A4Dark: #D0BCFF via md.ref.palette.primary80
Medium contrast: #4F378B via md.ref.palette.primary30
High contrast: #381E72 via md.ref.palette.primary20
Enabled › Containermd.comp.navigation-drawer.modal.container.elevationElevationmd.sys.elevation.level11dp—
Enabled › Containermd.comp.navigation-drawer.standard.container.elevationElevationmd.sys.elevation.level00dp—
Enabled › Containermd.comp.navigation-drawer.container.heightLength—100%—
Enabled › Containermd.comp.navigation-drawer.container.shapeShapemd.sys.shape.corner.large.endRounded corners: top-right 16dp, bottom-right 16dp—
Enabled › Containermd.comp.navigation-drawer.bottom.container.shapeShapemd.sys.shape.corner.large.topRounded corners: top-left 16dp, top-right 16dp—
Enabled › Containermd.comp.navigation-drawer.container.widthLength—360dp—
Enabled › Label textmd.comp.navigation-drawer.active.label-text.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Enabled › Label textmd.comp.navigation-drawer.inactive.label-text.colorColormd.sys.color.on-surface-variant → md.ref.palette.neutral-variant30#49454FDark: #CAC4D0 via md.ref.palette.neutral-variant80
Medium contrast: #322F37 via md.ref.palette.neutral-variant20
High contrast: #000000 via md.ref.palette.neutral-variant0
Enabled › Label textmd.comp.navigation-drawer.label-text.fontFont namesmd.sys.typescale.label-large.font → md.ref.typeface.plainRoboto—
Enabled › Label textmd.comp.navigation-drawer.label-text.line-heightLine heightmd.sys.typescale.label-large.line-height20pt—
Enabled › Label textmd.comp.navigation-drawer.label-text.sizeFont sizemd.sys.typescale.label-large.size14pt—
Enabled › Label textmd.comp.navigation-drawer.label-text.trackingFont trackingmd.sys.typescale.label-large.tracking0.1pt—
Enabled › Label textmd.comp.navigation-drawer.label-text.weightFont weightmd.sys.typescale.label-large.weight → md.ref.typeface.weight-medium500—
Enabled › Label textmd.comp.navigation-drawer.active.label-text.weightFont weightmd.sys.typescale.label-large.weight.prominent → md.ref.typeface.weight-bold700—
Enabled › Label textmd.comp.navigation-drawer.label-text.typeTypographycomposite
font names: md.comp.navigation-drawer.label-text.font → md.sys.typescale.label-large.font → md.ref.typeface.plain
font weight: md.comp.navigation-drawer.label-text.weight → md.sys.typescale.label-large.weight → md.ref.typeface.weight-medium
font size: md.comp.navigation-drawer.label-text.size → md.sys.typescale.label-large.size
line height: md.comp.navigation-drawer.label-text.line-height → md.sys.typescale.label-large.line-height
font tracking: md.comp.navigation-drawer.label-text.tracking → md.sys.typescale.label-large.tracking
Roboto · weight 500 · size 14pt · line height 20pt · tracking 0.1pt—
Enabled › Iconmd.comp.navigation-drawer.active.icon.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Enabled › Iconmd.comp.navigation-drawer.inactive.icon.colorColormd.sys.color.on-surface-variant → md.ref.palette.neutral-variant30#49454FDark: #CAC4D0 via md.ref.palette.neutral-variant80
Medium contrast: #322F37 via md.ref.palette.neutral-variant20
High contrast: #000000 via md.ref.palette.neutral-variant0
Enabled › Iconmd.comp.navigation-drawer.icon.sizeLength—24dp—
Enabled › Headlinemd.comp.navigation-drawer.headline.colorColormd.sys.color.on-surface-variant → md.ref.palette.neutral-variant30#49454FDark: #CAC4D0 via md.ref.palette.neutral-variant80
Medium contrast: #322F37 via md.ref.palette.neutral-variant20
High contrast: #000000 via md.ref.palette.neutral-variant0
Enabled › Headlinemd.comp.navigation-drawer.headline.fontFont namesmd.sys.typescale.title-small.font → md.ref.typeface.plainRoboto—
Enabled › Headlinemd.comp.navigation-drawer.headline.line-heightLine heightmd.sys.typescale.title-small.line-height20pt—
Enabled › Headlinemd.comp.navigation-drawer.headline.sizeFont sizemd.sys.typescale.title-small.size14pt—
Enabled › Headlinemd.comp.navigation-drawer.headline.trackingFont trackingmd.sys.typescale.title-small.tracking0.1pt—
Enabled › Headlinemd.comp.navigation-drawer.headline.weightFont weightmd.sys.typescale.title-small.weight → md.ref.typeface.weight-medium500—
Enabled › Headlinemd.comp.navigation-drawer.headline.typeTypographycomposite
font names: md.comp.navigation-drawer.headline.font → md.sys.typescale.title-small.font → md.ref.typeface.plain
font weight: md.comp.navigation-drawer.headline.weight → md.sys.typescale.title-small.weight → md.ref.typeface.weight-medium
font size: md.comp.navigation-drawer.headline.size → md.sys.typescale.title-small.size
line height: md.comp.navigation-drawer.headline.line-height → md.sys.typescale.title-small.line-height
font tracking: md.comp.navigation-drawer.headline.tracking → md.sys.typescale.title-small.tracking
Roboto · weight 500 · size 14pt · line height 20pt · tracking 0.1pt—
Enabled › Dividermd.comp.navigation-drawer.divider.color (deprecated)Colormd.sys.color.outline → md.ref.palette.neutral-variant50#79747EDark: #938F99 via md.ref.palette.neutral-variant60
Medium contrast: #49454F via md.ref.palette.neutral-variant30
High contrast: #322F37 via md.ref.palette.neutral-variant20
Enabled › Active indicatormd.comp.navigation-drawer.active-indicator.colorColormd.sys.color.secondary-container → md.ref.palette.secondary90#E8DEF8Dark: #4A4458 via md.ref.palette.secondary30
Medium contrast: #625B71 via md.ref.palette.secondary40
High contrast: #4A4458 via md.ref.palette.secondary30
Enabled › Active indicatormd.comp.navigation-drawer.active-indicator.heightLength—56dp—
Enabled › Active indicatormd.comp.navigation-drawer.active-indicator.shapeShapemd.sys.shape.corner.fullCircular (fully rounded)—
Enabled › Active indicatormd.comp.navigation-drawer.active-indicator.widthLength—336dp—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.colorColormd.sys.color.on-surface-variant → md.ref.palette.neutral-variant30#49454FDark: #CAC4D0 via md.ref.palette.neutral-variant80
Medium contrast: #322F37 via md.ref.palette.neutral-variant20
High contrast: #000000 via md.ref.palette.neutral-variant0
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.fontFont namesmd.sys.typescale.label-large.font → md.ref.typeface.plainRoboto—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.line-heightLine heightmd.sys.typescale.label-large.line-height20pt—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.sizeFont sizemd.sys.typescale.label-large.size14pt—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.trackingFont trackingmd.sys.typescale.label-large.tracking0.1pt—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.weightFont weightmd.sys.typescale.label-large.weight → md.ref.typeface.weight-medium500—
Enabled › Large badge labelmd.comp.navigation-drawer.large-badge-label.typeTypographycomposite
font names: md.comp.navigation-drawer.large-badge-label.font → md.sys.typescale.label-large.font → md.ref.typeface.plain
font weight: md.comp.navigation-drawer.large-badge-label.weight → md.sys.typescale.label-large.weight → md.ref.typeface.weight-medium
font size: md.comp.navigation-drawer.large-badge-label.size → md.sys.typescale.label-large.size
line height: md.comp.navigation-drawer.large-badge-label.line-height → md.sys.typescale.label-large.line-height
font tracking: md.comp.navigation-drawer.large-badge-label.tracking → md.sys.typescale.label-large.tracking
Roboto · weight 500 · size 14pt · line height 20pt · tracking 0.1pt—
Enabled › [Deprecated] Scrimmd.comp.navigation-drawer.scrim.color (deprecated)Colormd.ref.palette.neutral-variant20#322F37—
Enabled › [Deprecated] Scrimmd.comp.navigation-drawer.scrim.opacity (deprecated)Opacity—0.4—
Hovered › Label textmd.comp.navigation-drawer.active.hover.label-text.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Hovered › Label textmd.comp.navigation-drawer.inactive.hover.label-text.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Hovered › State layermd.comp.navigation-drawer.active.hover.state-layer.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Hovered › State layermd.comp.navigation-drawer.inactive.hover.state-layer.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Hovered › State layermd.comp.navigation-drawer.hover.state-layer.opacityOpacitymd.sys.state.hover.state-layer-opacity0.08—
Hovered › Iconmd.comp.navigation-drawer.active.hover.icon.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Hovered › Iconmd.comp.navigation-drawer.inactive.hover.icon.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Focused › Label textmd.comp.navigation-drawer.active.focus.label-text.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Focused › Label textmd.comp.navigation-drawer.inactive.focus.label-text.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Focused › State layermd.comp.navigation-drawer.active.focus.state-layer.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Focused › State layermd.comp.navigation-drawer.inactive.focus.state-layer.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Focused › State layermd.comp.navigation-drawer.focus.state-layer.opacityOpacitymd.sys.state.focus.state-layer-opacity0.1—
Focused › Iconmd.comp.navigation-drawer.active.focus.icon.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Focused › Iconmd.comp.navigation-drawer.inactive.focus.icon.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Focused › Focus indicatormd.comp.navigation-drawer.focus.indicator.colorColormd.sys.color.secondary → md.ref.palette.secondary40#625B71Dark: #CCC2DC via md.ref.palette.secondary80
Medium contrast: #4A4458 via md.ref.palette.secondary30
High contrast: #332D41 via md.ref.palette.secondary20
Focused › Focus indicatormd.comp.navigation-drawer.focus.indicator.thicknessLengthmd.sys.state.focus-indicator.thickness3dp—
Focused › Focus indicatormd.comp.navigation-drawer.focus.indicator.outline.offsetLengthmd.sys.state.focus-indicator.inner-offset-3dp—
Pressed (ripple) › Label textmd.comp.navigation-drawer.active.pressed.label-text.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Pressed (ripple) › Label textmd.comp.navigation-drawer.inactive.pressed.label-text.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0
Pressed (ripple) › State layermd.comp.navigation-drawer.active.pressed.state-layer.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Pressed (ripple) › State layermd.comp.navigation-drawer.inactive.pressed.state-layer.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Pressed (ripple) › State layermd.comp.navigation-drawer.pressed.state-layer.opacityOpacitymd.sys.state.pressed.state-layer-opacity0.1—
Pressed (ripple) › Iconmd.comp.navigation-drawer.active.pressed.icon.colorColormd.sys.color.on-secondary-container → md.ref.palette.secondary30#4A4458Dark: #E8DEF8 via md.ref.palette.secondary90
Medium contrast: #FFFFFF via md.ref.palette.secondary100
High contrast: #FFFFFF via md.ref.palette.secondary100
Pressed (ripple) › Iconmd.comp.navigation-drawer.inactive.pressed.icon.colorColormd.sys.color.on-surface → md.ref.palette.neutral10#1D1B20Dark: #E6E0E9 via md.ref.palette.neutral90
Medium contrast: #000000 via md.ref.palette.neutral0
High contrast: #000000 via md.ref.palette.neutral0

Color ​

Color values are implemented through design tokens. For design, this means working with color values that correspond with tokens. For implementation, a color value will be a token that references a value. Learn more about design tokens

Navigation drawer diagram numbering 9 color roles.

Navigation drawer color roles used for light and dark schemes:

  1. Surface container low
  2. On surface variant
  3. On secondary container
  4. On secondary container
  5. Secondary container
  6. On secondary container
  7. On surface variant
  8. On surface variant
  9. Scrim

For divider color roles, go to divider specs.

States ​

States are visual representations used to communicate the status of a component or interactive element. Learn more about interaction states

4 navigation drawers illustrating enabled, hovered, focused, and pressed states.

Navigation drawer states: 

  1. Enabled 
  2. Hovered 
  3. Focused 
  4. Pressed

State specs are in the tokens module above

Measurements ​

Standard navigation drawer ​

Standard navigation drawer with measurements shown for various elements.

Element size measurements

Standard navigation drawer with measurements shown for padding and margins.

Padding and margins

AttributeValue
Container height100%
Container width360dp
Container shape0,16,16,0dp corner radii
Icon size24dp
Active indicator height56dp
Active indicator shape28dp
Active indicator width336dp
Horizontal label alignmentStart-aligned
Left padding28dp
Right padding28dp
Active indicator padding12dp
Padding between elements0dp

Modal navigation drawer with measurements shown for various elements.

Element size measurements

Modal navigation drawer with measurements shown for padding and margins.

Padding and margins

AttributeValue
Container height100%
Container width360dp
Icon size24dp
Active indicator height56dp
Active indicator shape28dp
Active indicator width336dp
Horizontal label alignmentStart-aligned
Left padding28dp
Right padding28dp
Active indicator padding12dp
Padding between elements0dp

Unofficial offline mirror. Content © Google, licensed under CC BY 4.0.