WindowInsets Handling & Keyboard Animations

Jul 20 2021 · Kotlin 1.5.10, Android 11, Android Studio 4.1.3 and Android Studio Arctic Fox Canary 12

Part 1: Keyboard Handling in Android

04. Adjust the System Windows

Episode complete

Play next episode

Next
About this episode
Leave a rating/review
See forum comments
Cinema mode Mark complete Download course materials
Previous episode: 03. Read the Keyboard Height Next episode: 05. Animate the Keyboard

Get immediate access to this and 4,000+ other videos and books.

Take your career further with a Kodeco Personal Plan. With unlimited access to over 40+ books and 4,000+ professional videos in a single subscription, it's simply the best investment you can make in your development career.

Learn more Already a subscriber? Sign in.

Heads up... You've reached locked video content where the transcript will be shown as obfuscated text.

In this episode you’ll use: DecorFitsSystemWindows, OnApplyWindowInsetsListener. API’s to implement a new feature.

window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
  View.SYSTEM_UI_FLAG_FULLSCREEN
WindowCompat.setDecorFitsSystemWindows(Window, Boolean)
WindowCompat.setDecorFitsSystemWindows(window, !isAtLeastAndroid11())
private var posTop = 0
private var posBottom = 0
 
fun setUiWindowInsets() {
  
  ViewCompat.setOnApplyWindowInsetsListener(container) { _, insets ->
    
    posTop = insets.getInsets(WindowInsetsCompat.Type.systemBars()).top
    posBottom = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom

    val navBar = insets.getInsets(WindowInsetsCompat.Type.navigationBars())

    if (posBottom < navBar.bottom) {
      posBottom = navBar.bottom
    }
    
    container.updateLayoutParams<ViewGroup.MarginLayoutParams> {
      updateMargins(
        top = posTop,
        bottom = posBottom)
    }
 
    insets
 }
}