# ChipGroup

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

*** ** * ** ***


```
public class ChipGroup
```

<br />

*** ** * ** ***

A ChipGroup is used to hold multiple `https://developer.android.com/reference/com/google/android/material/chip/Chip`s. By default, the chips are reflowed across multiple lines. Set the `app:singleLine` attribute to constrain the chips to a single horizontal line. If you do so, you'll usually want to wrap this ChipGroup in a android.widget.HorizontalScrollView.

ChipGroup also supports a multiple-exclusion scope for a set of chips. When you set the `
app:singleSelection` attribute, checking one chip that belongs to a chip group unchecks any previously checked chip within the same group. The behavior mirrors that of android.widget.RadioGroup.

When a chip is added to a chip group, its checked state will be preserved. If the chip group is in the single selection mode and there is an existing checked chip when another checked chip is added, the existing checked chip will be unchecked to maintain the single selection rule.

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

## Summary

| ### Nested types |
|---|
| `public class https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.LayoutParams` A `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.LayoutParams` implementation for `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup`. |
| `public interface https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedChangeListener` **This interface is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedStateChangeListener` instead. <br /> |
| `public interface https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedStateChangeListener` Interface definition for a callback which supports multiple checked IDs to be invoked when the checked chips changed in this group. |

| ### Public fields |
|---|---|
| `int` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#chipSpacingHorizontal()` |
| `int` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#chipSpacingVertical()` |

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

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#check(int)(int id)` Sets the selection to the chip whose identifier is passed in parameter. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#clearCheck()()` Clears the selection. |
| `LayoutParams` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#generateLayoutParams(AttributeSet)(AttributeSet attrs)` |
| `int` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipId()()` When in `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`, returns the identifier of the selected chip in this group. |
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/lang/Integer>` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipIds()()` Returns the identifiers of the selected `https://developer.android.com/reference/com/google/android/material/chip/Chip`s in this group. |
| `int` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getChipSpacingHorizontal()()` Returns the horizontal spacing between visible chips in this group. |
| `int` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getChipSpacingVertical()()` Returns the vertical spacing between visible chips in this group. |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSelectionRequired()()` Returns whether we prevent all child chips from being deselected. |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleLine()()` Returns whether this chip group is single line or reflowed multiline. |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()()` Returns whether this chip group only allows a single chip to be checked. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)(AccessibilityNodeInfo info)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacing(int)(int chipSpacing)` Sets the horizontal and vertical spacing between visible chips in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontal(int)(int chipSpacingHorizontal)` Sets the horizontal spacing between visible chips in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontalResource(int)(int id)` Sets the horizontal spacing between visible chips in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingResource(int)(int id)` Sets the horizontal and vertical spacing between visible chips in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVertical(int)(int chipSpacingVertical)` Sets the vertical spacing between visible chips in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVerticalResource(int)(int id)` Sets the vertical spacing between visible chips in this group. |
| `void` | `[setDividerDrawableHorizontal](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setDividerDrawableHorizontal(Drawable))(Drawable divider)` **This method is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontal(int)` instead. <br /> |
| `void` | `[setDividerDrawableVertical](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setDividerDrawableVertical(Drawable))(Drawable divider)` **This method is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVertical(int)` instead. <br /> |
| `void` | `[setFlexWrap](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setFlexWrap(int))(int flexWrap)` **This method is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleLine(int)` instead. <br /> |
| `void` | `[setOnCheckedChangeListener](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnCheckedChangeListener(com.google.android.material.chip.ChipGroup.OnCheckedChangeListener))(https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedChangeListener listener)` **This method is deprecated.** use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnCheckedStateChangeListener(com.google.android.material.chip.ChipGroup.OnCheckedStateChangeListener)` instead. <br /> |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnCheckedStateChangeListener(com.google.android.material.chip.ChipGroup.OnCheckedStateChangeListener)( https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedStateChangeListener listener )` Register a callback to be invoked when the checked chip changes in this group. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnHierarchyChangeListener(OnHierarchyChangeListener)(OnHierarchyChangeListener listener)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSelectionRequired(boolean)(boolean selectionRequired)` Sets whether we prevent all child chips from being deselected. |
| `void` | `[setShowDividerHorizontal](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setShowDividerHorizontal(int))(int dividerMode)` **This method is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontal(int)` instead. <br /> |
| `void` | `[setShowDividerVertical](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setShowDividerVertical(int))(int dividerMode)` **This method is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVertical(int)` instead. <br /> |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleLine(int)(int id)` Sets whether this chip group is single line, or reflowed multiline. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleLine(boolean)(boolean singleLine)` Sets whether this chip group is single line, or reflowed multiline. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleSelection(int)(int id)` Sets whether this chip group only allows a single chip to be checked. |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleSelection(boolean)(boolean singleSelection)` Sets whether this chip group only allows a single chip to be checked. |

| ### Protected methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#checkLayoutParams(ViewGroup.LayoutParams)(LayoutParams p)` |
| `LayoutParams` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#generateDefaultLayoutParams()()` |
| `LayoutParams` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#generateLayoutParams(ViewGroup.LayoutParams)(LayoutParams lp)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#onFinishInflate()()` |

## Public fields

### chipSpacingHorizontal

```
public int chipSpacingHorizontal
```

### chipSpacingVertical

```
public int chipSpacingVertical
```

## Public constructors

### ChipGroup

```
public ChipGroup(Context context)
```

### ChipGroup

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

### ChipGroup

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

## Public methods

### check

```
public void check(int id)
```

Sets the selection to the chip whose identifier is passed in parameter.

In `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`, checking a chip also unchecks all others.

| Parameters |
|---|---|
| `int id` | the unique id of the chip to select in this group |

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipId()` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#clearCheck()` |   |

### clearCheck

```
public void clearCheck()
```

Clears the selection. When the selection is cleared, no chip in this group is selected and `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipId()` returns NO_ID.

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#check(int)` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipId()` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipIds()` |   |

### generateLayoutParams

```
public LayoutParams generateLayoutParams(AttributeSet attrs)
```

### getCheckedChipId

```
public int getCheckedChipId()
```

When in `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`, returns the identifier of the selected chip in this group. Upon empty selection, the returned value is NO_ID. If not in single selection mode, the return value is NO_ID.

ref R.styleable#ChipGroup_checkedChip

| Returns |
|---|---|
| `int` | the unique id of the selected chip in this group in single selection mode |

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#check(int)` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#clearCheck()` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipIds()` |   |

### getCheckedChipIds

```
public List<Integer> getCheckedChipIds()
```

Returns the identifiers of the selected `https://developer.android.com/reference/com/google/android/material/chip/Chip`s in this group. Upon empty selection, the returned value is an empty list.

| Returns |
|---|---|
| `https://developer.android.com/reference/java/util/List<https://developer.android.com/reference/java/lang/Integer>` | The unique IDs of the selected `https://developer.android.com/reference/com/google/android/material/chip/Chip`s in this group. When in `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`, returns a list with a single ID. When no `https://developer.android.com/reference/com/google/android/material/chip/Chip`s are selected, returns an empty list. |

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#check(int)` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#clearCheck()` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#getCheckedChipId()` |   |

### getChipSpacingHorizontal

```
public int getChipSpacingHorizontal()
```

Returns the horizontal spacing between visible chips in this group.

### getChipSpacingVertical

```
public int getChipSpacingVertical()
```

Returns the vertical spacing between visible chips in this group.

### isSelectionRequired

```
public boolean isSelectionRequired()
```

Returns whether we prevent all child chips from being deselected.

ref R.styleable#ChipGroup_selectionRequired

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleSelection(boolean)` |   |
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSelectionRequired(boolean)` |   |

### isSingleLine

```
public boolean isSingleLine()
```

Returns whether this chip group is single line or reflowed multiline.

### isSingleSelection

```
public boolean isSingleSelection()
```

Returns whether this chip group only allows a single chip to be checked.

### onInitializeAccessibilityNodeInfo

```
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info)
```

### setChipSpacing

```
public void setChipSpacing(int chipSpacing)
```

Sets the horizontal and vertical spacing between visible chips in this group.

### setChipSpacingHorizontal

```
public void setChipSpacingHorizontal(int chipSpacingHorizontal)
```

Sets the horizontal spacing between visible chips in this group.

### setChipSpacingHorizontalResource

```
public void setChipSpacingHorizontalResource(int id)
```

Sets the horizontal spacing between visible chips in this group.

### setChipSpacingResource

```
public void setChipSpacingResource(int id)
```

Sets the horizontal and vertical spacing between visible chips in this group.

### setChipSpacingVertical

```
public void setChipSpacingVertical(int chipSpacingVertical)
```

Sets the vertical spacing between visible chips in this group.

### setChipSpacingVerticalResource

```
public void setChipSpacingVerticalResource(int id)
```

Sets the vertical spacing between visible chips in this group.

### setDividerDrawableHorizontal

```
public void [setDividerDrawableHorizontal](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setDividerDrawableHorizontal(Drawable))(Drawable divider)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontal(int)` instead.

### setDividerDrawableVertical

```
public void [setDividerDrawableVertical](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setDividerDrawableVertical(Drawable))(Drawable divider)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVertical(int)` instead.

### setFlexWrap

```
public void [setFlexWrap](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setFlexWrap(int))(int flexWrap)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleLine(int)` instead.

### setOnCheckedChangeListener

```
public void [setOnCheckedChangeListener](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnCheckedChangeListener(com.google.android.material.chip.ChipGroup.OnCheckedChangeListener))(ChipGroup.OnCheckedChangeListener listener)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setOnCheckedStateChangeListener(com.google.android.material.chip.ChipGroup.OnCheckedStateChangeListener)` instead.

Register a callback to be invoked when the checked chip changes in this group. This callback is only invoked in `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedChangeListener listener` | the callback to call on checked state change |

### setOnCheckedStateChangeListener

```
public void setOnCheckedStateChangeListener(
    ChipGroup.OnCheckedStateChangeListener listener
)
```

Register a callback to be invoked when the checked chip changes in this group. This callback is only invoked in `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#isSingleSelection()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup.OnCheckedStateChangeListener listener` | the callback to call on checked state change |

### setOnHierarchyChangeListener

```
public void setOnHierarchyChangeListener(OnHierarchyChangeListener listener)
```

### setSelectionRequired

```
public void setSelectionRequired(boolean selectionRequired)
```

Sets whether we prevent all child chips from being deselected.

ref R.styleable#ChipGroup_selectionRequired

| See also |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setSingleSelection(boolean)` |   |

### setShowDividerHorizontal

```
public void [setShowDividerHorizontal](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setShowDividerHorizontal(int))(int dividerMode)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingHorizontal(int)` instead.

### setShowDividerVertical

```
public void [setShowDividerVertical](https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setShowDividerVertical(int))(int dividerMode)
```

> [!CAUTION]
> **This method is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/chip/ChipGroup#setChipSpacingVertical(int)` instead.

### setSingleLine

```
public void setSingleLine(int id)
```

Sets whether this chip group is single line, or reflowed multiline.

### setSingleLine

```
public void setSingleLine(boolean singleLine)
```

Sets whether this chip group is single line, or reflowed multiline.

### setSingleSelection

```
public void setSingleSelection(int id)
```

Sets whether this chip group only allows a single chip to be checked.

Calling this method results in all the chips in this group to become unchecked.

### setSingleSelection

```
public void setSingleSelection(boolean singleSelection)
```

Sets whether this chip group only allows a single chip to be checked.

Calling this method results in all the chips in this group to become unchecked.

## Protected methods

### checkLayoutParams

```
protected boolean checkLayoutParams(LayoutParams p)
```

### generateDefaultLayoutParams

```
protected LayoutParams generateDefaultLayoutParams()
```

### generateLayoutParams

```
protected LayoutParams generateLayoutParams(LayoutParams lp)
```

### onFinishInflate

```
protected void onFinishInflate()
```