Skip to content

Radio button ​

Radio buttons allow users to select one option from a set.

Overview · Specs · Guidelines · Accessibility

Diagram of enabled radio button.

  1. Radio button icon

Tokens & specs ​

Learn more about design tokens

Design tokens

Token table

Machine-readable relationship table

Radio button tokens · 1 token set · 26 tokens · live token table · DSDB TOKEN_TABLE.6acb269a58d5f93f

  • Default context: Theme: Light · Platform: Android · Audience: 3P · Contrast: Default · iOS dark theme elevation: None · iOS weight setting: Default
  • Not configurable here (group default used): Motion scheme: Standard · Font: Static · 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.

Radio Button · md.comp.radio-button · 26 tokens

For radio buttons.

GroupTokenTypeReference chainResolved valueOther contexts
Enabled › Iconmd.comp.radio-button.selected.icon.colorColormd.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 › Iconmd.comp.radio-button.unselected.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.radio-button.icon.sizeLength—20dp—
Enabled › State layermd.comp.radio-button.state-layer.sizeLength—40dp—
Disabled › Iconmd.comp.radio-button.disabled.selected.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
Disabled › Iconmd.comp.radio-button.disabled.selected.icon.opacityOpacity—0.38—
Disabled › Iconmd.comp.radio-button.disabled.unselected.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
Disabled › Iconmd.comp.radio-button.disabled.unselected.icon.opacityOpacity—0.38—
Hovered › State layermd.comp.radio-button.selected.hover.state-layer.colorColormd.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
Hovered › State layermd.comp.radio-button.selected.hover.state-layer.opacityOpacitymd.sys.state.hover.state-layer-opacity0.08—
Hovered › State layermd.comp.radio-button.unselected.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.radio-button.unselected.hover.state-layer.opacityOpacitymd.sys.state.hover.state-layer-opacity0.08—
Hovered › Iconmd.comp.radio-button.selected.hover.icon.colorColormd.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
Hovered › Iconmd.comp.radio-button.unselected.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 › State layermd.comp.radio-button.selected.focus.state-layer.colorColormd.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
Focused › State layermd.comp.radio-button.selected.focus.state-layer.opacityOpacitymd.sys.state.focus.state-layer-opacity0.1—
Focused › State layermd.comp.radio-button.unselected.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.radio-button.unselected.focus.state-layer.opacityOpacitymd.sys.state.focus.state-layer-opacity0.1—
Focused › Iconmd.comp.radio-button.selected.focus.icon.colorColormd.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
Focused › Iconmd.comp.radio-button.unselected.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
Pressed (ripple) › State layermd.comp.radio-button.selected.pressed.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
Pressed (ripple) › State layermd.comp.radio-button.selected.pressed.state-layer.opacityOpacitymd.sys.state.pressed.state-layer-opacity0.1—
Pressed (ripple) › State layermd.comp.radio-button.unselected.pressed.state-layer.colorColormd.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
Pressed (ripple) › State layermd.comp.radio-button.unselected.pressed.state-layer.opacityOpacitymd.sys.state.pressed.state-layer-opacity0.1—
Pressed (ripple) › Iconmd.comp.radio-button.selected.pressed.icon.colorColormd.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
Pressed (ripple) › Iconmd.comp.radio-button.unselected.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

Diagram of selected and unselected radio button colors.

Radio button color roles used for light and dark themes:

  1. Primary
  2. On surface variant

Adjacent text label color ​

Use the color role on surface for adjacent text labels. This remains the same even if interacting with the label or component.

Radio buttons with labels. The labels are the same color for both selected and unselected radio buttons.

The text color remains the same regardless if the button is selected or not

States ​

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

Diagram of radio button states including enabled, hover, focus, pressed, and disabled.

  1. Enabled 
  2. Hover 
  3. Focus 
  4. Pressed
  5. Disabled

State specs are in the token module above

Measurements ​

Diagram of radio button layout values.

Radio button size measurements

AttributeValue
Icon size20dp
State layer size40dp
Target size48dp

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