# MaterialSplitButton

[View Source](https://github.com/material-components/material-components-android/blob/1.14.0/lib/java/com/google/android/material/button/MaterialSplitButton.java)

*** ** * ** ***


```
public class MaterialSplitButton extends MaterialButtonGroup
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [com.google.android.material.button.MaterialButtonGroup](https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup) ||
|   | ↳ | [com.google.android.material.button.MaterialSplitButton](https://developer.android.com/reference/com/google/android/material/button/MaterialSplitButton) |

*** ** * ** ***

A container for two `https://developer.android.com/reference/com/google/android/material/button/MaterialButton`s that together create a split button. The `https://developer.android.com/reference/com/google/android/material/button/MaterialButton`s in this group will be shown on a single line.

This layout currently only supports child views of type `https://developer.android.com/reference/com/google/android/material/button/MaterialButton`. Buttons can be added to this view group via XML, as follows:

```
<com.google.android.material.button.MaterialSplitButton
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/split_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/split_button_label"
        app:icon="@drawable/ic_edit_vd_theme_24dp"
        app:iconGravity="start"/>
    <Button
       style="?attr/materialSplitButtonIconFilledStyle"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:contentDescription="@string/split_button_label_chevron"
       app:icon="@drawable/m3_split_button_chevron_avd"/>

</com.google.android.material.button.MaterialSplitButton>
```

Buttons can also be added to this view group programmatically via the addView methods.

MaterialSplitButton is a `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup` with only two `https://developer.android.com/reference/com/google/android/material/button/MaterialButton`s.

For more information, see the [component developer guidance](https://github.com/material-components/material-components-android/blob/master/docs/components/Button.md) and [design guidelines](https://material.io/components/buttons/overview).

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/com/google/android/material/button/MaterialSplitButton#MaterialSplitButton(Context)(Context context)` |
| `https://developer.android.com/reference/com/google/android/material/button/MaterialSplitButton#MaterialSplitButton(Context,AttributeSet)(Context context, AttributeSet attrs)` |
| `https://developer.android.com/reference/com/google/android/material/button/MaterialSplitButton#MaterialSplitButton(Context,AttributeSet,int)( Context context, AttributeSet attrs, int defStyleAttr )` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/com/google/android/material/button/MaterialSplitButton#addView(View,int,ViewGroup.LayoutParams)(View child, int index, LayoutParams params)` This override prohibits Views other than `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` to be added where the leading `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` has either an icon and/or a label and the trailing `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` has an animated vector drawable as an icon. |

### Inherited Constants

From [com.google.android.material.button.MaterialButtonGroup](https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup) `static final https://developer.android.com/reference/java/lang/Object` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#OVERFLOW_BUTTON_TAG()` `static final int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#OVERFLOW_MODE_MENU() = 1`

A value for `overflowMode`.
`static final int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#OVERFLOW_MODE_NONE() = 0`

A value for `overflowMode`.
`static final int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#OVERFLOW_MODE_WRAP() = 2`

A value for `overflowMode`.

### Inherited fields

From [com.google.android.material.button.MaterialButtonGroup](https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup) `int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#overflowMode()` `int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#spacing()`

### Inherited methods

From [com.google.android.material.button.MaterialButtonGroup](https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup) `boolean` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#checkLayoutParams(ViewGroup.LayoutParams)(LayoutParams p)` `void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#dispatchDraw(Canvas)(Canvas canvas)` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup.LayoutParams` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#generateDefaultLayoutParams()()` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup.LayoutParams` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#generateLayoutParams(AttributeSet)(AttributeSet attrs)` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup.LayoutParams` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#generateLayoutParams(ViewGroup.LayoutParams)(LayoutParams p)` `int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getChildDrawingOrder(int,int)(int childCount, int i)`

We keep track of which views are pressed and checked to draw them last.
`https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getChildOriginalShapeAppearanceModel(int)(int index)`

Returns the original `https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel` for the `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` child at the given index.
`https://developer.android.com/reference/com/google/android/material/shape/CornerSize` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getInnerCornerSize()()`

Returns the inner corner size of the group.
`Drawable` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getOverflowButtonIcon()()`

Returns the icon shown for the overflow button, if present.
`int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getOverflowMode()()`

Returns the overflow mode.
`https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getShapeAppearance()()`

Returns the `https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel` of the group.
`int` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#getSpacing()()`

Returns the spacing (in pixels) between each button in the group.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#onLayout(boolean,int,int,int,int)(boolean changed, int l, int t, int r, int b)` `void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#onMeasure(int,int)(int widthMeasureSpec, int heightMeasureSpec)` `void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#onViewRemoved(View)(View child)` `void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setEnabled(boolean)(boolean enabled)`

Enables this `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup` and all its `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` children
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setInnerCornerSize(com.google.android.material.shape.CornerSize)(https://developer.android.com/reference/com/google/android/material/shape/CornerSize cornerSize)`

Sets the inner corner size of the group.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setOrientation(int)(int orientation)` `void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setOverflowButtonIcon(Drawable)(Drawable icon)`

Sets the icon to show for the overflow button.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setOverflowButtonIconResource(int)(int iconResourceId)`

Sets the icon to show for the overflow button.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setOverflowMode(int)(int overflowMode)`

Sets the overflow mode.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setShapeAppearance(com.google.android.material.shape.ShapeAppearanceModel)(https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel shapeAppearance)`

Sets the `https://developer.android.com/reference/com/google/android/material/shape/ShapeAppearanceModel` of the group.
`void` `https://developer.android.com/reference/com/google/android/material/button/MaterialButtonGroup#setSpacing(int)(int spacing)`

Sets the spacing between each button in the group.

## Public constructors

### MaterialSplitButton

```
public MaterialSplitButton(Context context)
```

### MaterialSplitButton

```
public MaterialSplitButton(Context context, AttributeSet attrs)
```

### MaterialSplitButton

```
public MaterialSplitButton(
    Context context,
    AttributeSet attrs,
    int defStyleAttr
)
```

## Public methods

### addView

```
public void addView(View child, int index, LayoutParams params)
```

This override prohibits Views other than `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` to be added where the leading `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` has either an icon and/or a label and the trailing `https://developer.android.com/reference/com/google/android/material/button/MaterialButton` has an animated vector drawable as an icon. It also makes updates to the add button shape and margins.