# WindowInsetsController.OnControllableInsetsChangedListener

Added in[API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)

# OnControllableInsetsChangedListener

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/android/view/WindowInsetsController.OnControllableInsetsChangedListener "View this page in Java")  

```
interface OnControllableInsetsChangedListener
```

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [android.view.WindowInsetsController.OnControllableInsetsChangedListener](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController.OnControllableInsetsChangedListener#) |

Listener to be notified when the set of controllable[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)controlled by a[WindowInsetsController](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController)changes.

Once a[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)becomes controllable, the app will be able to control the window that is causing this type of insets by calling[controlWindowInsetsAnimation](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController#controlWindowInsetsAnimation(kotlin.Int,%20kotlin.Long,%20android.view.animation.Interpolator,%20android.os.CancellationSignal,%20android.view.WindowInsetsAnimationControlListener)).

Note: When listening to controllability of the[Type.ime](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type#ime()),[controlWindowInsetsAnimation](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController#controlWindowInsetsAnimation(kotlin.Int,%20kotlin.Long,%20android.view.animation.Interpolator,%20android.os.CancellationSignal,%20android.view.WindowInsetsAnimationControlListener))may still fail in case the[InputMethodService](https://developer.android.com/reference/kotlin/android/inputmethodservice/InputMethodService.html#)decides to cancel the show request. This could happen when there is a hardware keyboard attached.

## Summary

|                                                                                                                                                                                                                                                                                                                                           Public methods                                                                                                                                                                                                                                                                                                                                           ||
|--------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract[Unit](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html) | [onControllableInsetsChanged](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController.OnControllableInsetsChangedListener#onControllableInsetsChanged(android.view.WindowInsetsController,%20kotlin.Int))`(`controller:` `[WindowInsetsController](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController)`, `typeMask:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`)` Called when the set of controllable[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)changes. |

## Public methods

### onControllableInsetsChanged

Added in[API level 30](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)  

```
abstract fun onControllableInsetsChanged(
    controller: WindowInsetsController, 
    typeMask: Int
): Unit
```

Called when the set of controllable[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)changes.

|                                                                                                                                                                                                                                                                                                                                                                    Parameters                                                                                                                                                                                                                                                                                                                                                                    ||
|--------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `controller` | [WindowInsetsController](https://developer.android.com/reference/kotlin/android/view/WindowInsetsController):The controller for which the set of controllable[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)s are changing. This value cannot be`null`.                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `typeMask`   | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html):Bitwise type-mask of the[WindowInsets.Type](https://developer.android.com/reference/kotlin/android/view/WindowInsets.Type)s the controller is currently able to control. Value is either`0`or a combination of android.view.WindowInsets.Type.STATUS_BARS, android.view.WindowInsets.Type.NAVIGATION_BARS, android.view.WindowInsets.Type.CAPTION_BAR, android.view.WindowInsets.Type.IME, android.view.WindowInsets.Type.SYSTEM_GESTURES, android.view.WindowInsets.Type.MANDATORY_SYSTEM_GESTURES, android.view.WindowInsets.Type.TAPPABLE_ELEMENT, android.view.WindowInsets.Type.DISPLAY_CUTOUT, and android.view.WindowInsets.Type.SYSTEM_OVERLAYS |