material-components/material-components-android · error · UnsupportedOperationException

Changing divider modes has no effect. ChipGroup do not use d

Error message

Changing divider modes has no effect. ChipGroup do not use divider drawables as spacing.

What it means

ChipGroup.setShowDividerHorizontal is deprecated and throws UnsupportedOperationException because ChipGroup never draws dividers; it uses chip spacing for gaps. The message points you to setChipSpacingHorizontal as the supported way to control horizontal gaps.

Source

Thrown at lib/java/com/google/android/material/chip/ChipGroup.java:248

  @Deprecated
  public void setDividerDrawableHorizontal(Drawable divider) {
    throw new UnsupportedOperationException(
        "Changing divider drawables have no effect. ChipGroup do not use divider drawables as "
            + "spacing.");
  }

  /** @deprecated Use {@link ChipGroup#setChipSpacingVertical(int)} instead. */
  @Deprecated
  public void setDividerDrawableVertical(@Nullable Drawable divider) {
    throw new UnsupportedOperationException(
        "Changing divider drawables have no effect. ChipGroup do not use divider drawables as "
            + "spacing.");
  }

  /** @deprecated Use {@link ChipGroup#setChipSpacingHorizontal(int)} instead. */
  @Deprecated
  public void setShowDividerHorizontal(int dividerMode) {
    throw new UnsupportedOperationException(
        "Changing divider modes has no effect. ChipGroup do not use divider drawables as spacing.");
  }

  /** @deprecated Use {@link ChipGroup#setChipSpacingVertical(int)} instead. */
  @Deprecated
  public void setShowDividerVertical(int dividerMode) {
    throw new UnsupportedOperationException(
        "Changing divider modes has no effect. ChipGroup do not use divider drawables as spacing.");
  }

  /** @deprecated Use {@link ChipGroup#setSingleLine(int)} instead. */
  @Deprecated
  public void setFlexWrap(int flexWrap) {
    throw new UnsupportedOperationException(
        "Changing flex wrap not allowed. ChipGroup exposes a singleLine attribute instead.");
  }

  /**

View on GitHub (pinned to ac7e18efee)

Solutions

  1. Delete the setShowDividerHorizontal call; set chipGroup.chipSpacingHorizontal (or app:chipSpacingHorizontal) instead.
  2. Audit shared divider utility code so it does not touch ChipGroup.

Example fix

// before
chipGroup.setShowDividerHorizontal(LinearLayout.SHOW_DIVIDER_MIDDLE) // throws

// after
chipGroup.chipSpacingHorizontal = resources.getDimensionPixelOffset(R.dimen.chip_spacing_h)
Defensive patterns

Strategy: validation

Validate before calling

// ChipGroup has no divider modes; only spacing is configurable
val spacing = resources.getDimensionPixelOffset(R.dimen.chip_spacing_h)
chipGroup.chipSpacingHorizontal = spacing

Prevention

When it happens

Trigger: Calling chipGroup.setShowDividerHorizontal(dividerMode); adapting LinearLayout's setShowDivider* API when switching to ChipGroup.

Common situations: Porting divider-mode logic (SHOW_DIVIDER_MIDDLE etc.) from LinearLayout-based token rows to ChipGroup; shared theming utilities that call divider APIs on any ViewGroup.

Related errors


AI-assisted analysis of material-components/material-components-android@ac7e18efee (2026-08-14). Data as JSON: /api/errors/56c19d4a75fb42b7. Report an issue: GitHub.