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

03. Read the Keyboard Height

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: 02. Read the Keyboard Visibility Next episode: 04. Adjust the System Windows

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.

Your app is coming great!

val rect = Rect()

val decorView = requireActivity().window.decorView
val root: View = decorView.findViewById(android.R.id.content)
decorView.getWindowVisibleDisplayFrame(rect)
val keyboardHeight = root.rootView.height - rect.bottom
val decorView = requireActivity().window.decorView
val root: View = decorView.findViewById(android.R.id.content)
root.viewTreeObserver.addOnGlobalLayoutListener {
  
  val rect = Rect()
  decorView.getWindowVisibleDisplayFrame(rect)
  val keyboardHeight = root.rootView.height - rect.bottom
}
private const val THRESHOLD = 200

val decorView = requireActivity().window.decorView
val root: View = decorView.findViewById(android.R.id.content)
root.viewTreeObserver.addOnGlobalLayoutListener {
  
  val rect = Rect()
  decorView.getWindowVisibleDisplayFrame(rect)
  val keyboardHeight = root.rootView.height - rect.bottom
  if (keyboardHeight < THRESHOLD) {
  	Toast.makeText(context, "Keyboard open!", Toast.LENGTH_SHORT).show()
  } else {
  	Toast.makeText(context, "Keyboard closed!", Toast.LENGTH_SHORT).show()
  }
}
view?.rootWindowInsets?.getInsets(WindowInsetsCompat.Type.ime())?.bottom
ViewCompat.setOnApplyWindowInsetsListener(requireView()) { v, insets ->
  val height = view?.rootWindowInsets?.getInsets(WindowInsetsCompat.Type.ime())?.bottom
  insets!!
}