# ExpandableWidget

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

*** ** * ** ***


```
public interface ExpandableWidget
```

<br />

Known direct subclasses [ExpandableTransformationWidget](https://developer.android.com/reference/com/google/android/material/expandable/ExpandableTransformationWidget)

|---|---|
| `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableTransformationWidget` | An ExpandableWidget that visually transforms into another component when expanded. |

Known indirect subclasses [FloatingActionButton](https://developer.android.com/reference/com/google/android/material/floatingactionbutton/FloatingActionButton)

|---|---|
| `https://developer.android.com/reference/com/google/android/material/floatingactionbutton/FloatingActionButton` | Floating action buttons are used for a special type of promoted action. |

*** ** * ** ***

A widget that has expanded/collapsed state. When the expanded state changes, an event is dispatched so that other widgets may react via a androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior.

Implementations of this interface should create an instance of `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidgetHelper` and forward all calls to it.

The expanded state can saved across configuration changes by implementing onSaveInstanceState and onRestoreInstanceState:

```
@Override
protected Parcelable onSaveInstanceState() {
  Parcelable superState = super.onSaveInstanceState();
  ExtendableSavedState state = new ExtendableSavedState(superState);

  state.extendableStates.put(
      "expandableWidgetHelper", expandableWidgetHelper.onSaveInstanceState());

  return state;
}

@Override
protected void onRestoreInstanceState(Parcelable state) {
  if (!(state instanceof ExtendableSavedState)) {
    super.onRestoreInstanceState(state);
    return;
  }

  ExtendableSavedState ess = (ExtendableSavedState) state;
  super.onRestoreInstanceState(ess.getSuperState());

  expandableWidgetHelper.onRestoreInstanceState(
      ess.extendableStates.get("expandableWidgetHelper"));
}
```

## Summary

| ### Public methods |
|---|---|
| `abstract boolean` | `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget#isExpanded()()` Returns whether this widget is expanded. |
| `abstract boolean` | `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget#setExpanded(boolean)(boolean expanded)` Sets the expanded state on this widget. |

## Public methods

### isExpanded

```
abstract boolean isExpanded()
```

Returns whether this widget is expanded.

Implementations should call `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidgetHelper#isExpanded()`.

### setExpanded

```
abstract boolean setExpanded(boolean expanded)
```

Sets the expanded state on this widget.

Implementations should call `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidgetHelper#setExpanded(boolean)`.

| Returns |
|---|---|
| `boolean` | true if the expanded state changed as a result of this call. |