Bottom bar

Both Android and iOS bottom bars contain navigation options between the three to five top-level destinations in the app.


Recommendations#

  • It should always be positioned at the bottom of each screen.
  • All the destinations inside the bar should be of the same importance.

Anatomy#

Android#

anatomy

  1. Indicator

  2. Icon in active state

  3. Label in active state

iOS#

anatomy

  1. Indicator

  2. Icon in active state

  3. Label in active state

  4. Divider (hairline)


Overall styling#

Android#

  • The label uses the text-style small.
  • The line-height is default.
  • The icon con size is 24x24px.
  • Label text has always one line.
  • Elevation shadow is always 8dp.

iOS#

  • The title uses the text-style extra small.
  • The line-height is 120%.
  • The icon con size is 24x24px.
  • Divider at the top has 0.5px width.
  • Label text has always one line.

Variants#

  • Android and iOS bottom bars support both light and dark mode and can have between three to five destinations.

Android variants#

DestinationsModeAttributesPreview
threebackground-color: greyscale/light-mode/background/light-1
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
three-destinations-light
threebackground-color: greyscale/dark-mode/background/android/8dp
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
three-destinations-dark
fourbackground-color: greyscale/light-mode/background/light-1
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
four-destinations-light
fourbackground-color: greyscale/dark-mode/background/android/8dp
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
four-destinations-dark
fivebackground-color: greyscale/light-mode/background/light-1
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
five-destinations-light
fivebackground-color: greyscale/dark-mode/background/android/8dp
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
five-destinations-dark

iOS variants#

DestinationsModeAttributesPreview
threedivider: greyscale/light-mode/general/low-contrast
background: iOS-material/light-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
three-destinations-light
threedivider: greyscale/dark-mode/general/low-contrast
background: iOS-material/dark-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
three-destinations-dark
fourdivider: greyscale/light-mode/general/low-contrast
background: iOS-material/light-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
four-destinations-light
fourdivider: greyscale/dark-mode/general/low-contrast
background: iOS-material/dark-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
four-destinations-dark
fivedivider: greyscale/light-mode/general/low-contrast
background: iOS-material/light-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: brand-primary/base
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: brand-primary/base
indicator-color: brand-primary/base
five-destinations-light
fivedivider: greyscale/dark-mode/general/low-contrast
background: iOS-material/dark-mode/thick
label-color-default: greyscale/light-mode/general/medium-contrast
label-color-active: greyscale/light-mode/general/high-contrast
icon-color-default: greyscale/light-mode/general/medium-contrast
icon-color-active: greyscale/light-mode/general/high-contrast
indicator-color: brand-primary/base
five-destinations-dark

Spacing & measurements#

Android spacing#

TypeDescriptionPreview
horizontal spacingThe width of the screen is divided by the number of destinations in order to calculate the width of each destination section. All objects within the destination section are horizontally centered.android-horizontal-spacing
vertical spacingThe bar height adheres to the rule of 8 but due to the number of objects within, the objects are aligned optically and violate the rule of 8.android-vertical-spacing

iOS spacing#

TypeDescriptionPreview
horizontal spacingThe width of the screen is divided by the number of destinations in order to calculate the width of each destination section. All objects within the destination section are horizontally centered.ios-horizontal-spacing
vertical spacingThe bar height adheres to the rule of 8 but due to the number of objects within, the objects are aligned optically and violate the rule of 8.ios-vertical-spacing

What can be modified?#

  • Override the text and icons.
  • Adjust the width.

Our workflow in Figma#

  • Use the light or dark mode bottom bar with desired number of destinations.