# Split button [Split buttons](https://m3.material.io/components/split-button/overview) open a menu to give people more options related to an action. It is a specialized type of the connected button group. The trailing button is checkable with an animated icon. ![Split button hero ](assets/buttons/splitbutton-hero.png) **Note:** Images use various dynamic color schemes. ## Design & API documentation * [Material 3 (M3) spec](https://m3.material.io/components/split-button/overview) * [API reference](https://developer.android.com/reference/com/google/android/material/button/package-summary) ## Anatomy ![Anatomy of a split button](assets/buttons/splitbutton-anatomy.png) 1. Leading button 2. Icon 3. Label text 4. Trailing button More details on anatomy items in the [component guidelines](https://m3.material.io/components/split-button/guidelines#551f6e11-0f95-41c2-9398-cd4066755806). ## M3 Expressive ### M3 Expressive update Before you can use `Material3Expressive` component styles, follow the [`Material3Expressive` themes setup instructions](https://github.com/material-components/material-components-android/tree/master/docs/getting-started.md#material3expressive-themes). 5 sizes of split buttons. Split buttons have the same five recommended sizes as label and icon buttons The split button has a separate menu button that spins and changes shape when activated. It can be used alongside other buttons of the same size. [More on M3 Expressive](https://m3.material.io/blog/building-with-m3-expressive) Split button is a new component added in expressive, a special type of connected button group. **Sizes:** * Extra small * Small * Medium * Large * Extra large **Color styles:** * Elevated * Filled * Tonal * Outlined ## Key properties ### Size and space attributes Element | Attribute | Related method(s) | Default value --------------------------- | ---------------------- | --------------------------------------------- | ------------- **Size of inner corners** | `app:innerCornerSize` | `setInnerCornerSize`
`getInnerCornerSize` | `none` **Spacing between buttons** | `android:spacing` | `setSpacing`
`getSpacing` | `2dp` **Button size change** | `app:buttonSizeChange` | N/A | `0%` ### Styles and theme attributes Element | Style | Theme attribute ----------------------------------------- | --------------------------------------------------------- | --------------- **Default style** | `Widget.Material3.MaterialSplitButton` | `?attr/materialSplitButtonStyle` **Leading button primary (filled) style** | `Widget.Material3.SplitButton.LeadingButton.Filled` | `?attr/materialSplitButtonLeadingFilledStyle` **Leading button primary (tonal) style** | `Widget.Material3.SplitButton.LeadingButton.Filled.Tonal` | `?attr/materialSplitButtonLeadingFilledTonalStyle` **Trailing icon primary (filled) style** | `Widget.Material3.SplitButton.IconButton.Filled` | `?attr/materialSplitButtonIconFilledStyle` **Trailing icon secondary (tonal) style** | `Widget.Material3.SplitButton.IconButton.Filled.Tonal` | `?attr/materialSplitButtonIconFilledTonalStyle` The two new trailing icon styles `materialSplitButtonIconFilledStyle` – parented by `materialIconButtonFilledStyle` – and `materialSplitButtonIconFilledTonalStyle`-- parented by `materialIconButtonFilledTonalStyle` allow for the `MaterialSplitButton` custom behavior for `onChecked` and `onUnchecked` states. `materialSplitButtonIconFilledStyle` is paired with default leading button styling, with no style explicitly specified in the XML. `materialSplitButtonIconFilledTonalStyle` is paired with `materialButtonTonalStyle` for the leading button. ## Code implementation Before you can use Material buttons, you need to add a dependency to the Material components for Android library. For more information, go to the [Getting started](https://github.com/material-components/material-components-android/tree/master/docs/getting-started.md) page. **Note:** `