Clear window insets listener when view is detached from window.

This commit is contained in:
Alex Hart
2025-04-09 11:55:19 -03:00
committed by Michelle Tang
parent 970f5f2480
commit 0227af199b
3 changed files with 23 additions and 6 deletions

View File

@@ -6,10 +6,12 @@ import android.util.AttributeSet
import android.util.DisplayMetrics
import android.view.Surface
import android.view.View
import android.view.WindowInsets
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.Guideline
import androidx.core.content.withStyledAttributes
import androidx.core.graphics.Insets
import androidx.core.view.OnApplyWindowInsetsListener
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsAnimationCompat
import androidx.core.view.WindowInsetsCompat
@@ -66,16 +68,24 @@ open class InsetAwareConstraintLayout @JvmOverloads constructor(
private var previousKeyboardHeight: Int = 0
private var applyRootInsets: Boolean = false
private val windowInsetsListener = androidx.core.view.OnApplyWindowInsetsListener { _, insets ->
applyInsets(windowInsets = insets.getInsets(windowTypes), keyboardInsets = insets.getInsets(keyboardType))
insets
}
val isKeyboardShowing: Boolean
get() = previousKeyboardHeight > 0
override fun onAttachedToWindow() {
super.onAttachedToWindow()
ViewCompat.setOnApplyWindowInsetsListener(insetTarget()) { _, windowInsetsCompat ->
applyInsets(windowInsets = windowInsetsCompat.getInsets(windowTypes), keyboardInsets = windowInsetsCompat.getInsets(keyboardType))
windowInsetsCompat
}
ViewCompat.setOnApplyWindowInsetsListener(insetTarget(), windowInsetsListener)
}
override fun onDetachedFromWindow() {
super.onDetachedFromWindow()
ViewCompat.setOnApplyWindowInsetsListener(insetTarget(), null)
}
init {

View File

@@ -1272,7 +1272,7 @@ class ConversationFragment :
inputPanel.setHideForMessageRequestState(inputDisabled)
if (inputDisabled) {
WindowUtil.setNavigationBarColor(requireActivity(), disabledInputView.color)
binding.navBar.setBackgroundColor(disabledInputView.color)
} else {
disabledInputView.clear()
}
@@ -1482,7 +1482,7 @@ class ConversationFragment :
)
)
WindowUtil.setNavigationBarColor(requireActivity(), ContextCompat.getColor(requireContext(), navColor))
binding.navBar.setBackgroundColor(ContextCompat.getColor(requireContext(), navColor))
}
private fun presentChatColors(chatColors: ChatColors) {

View File

@@ -315,6 +315,13 @@
app:layout_constraintStart_toStartOf="@id/parent_start_guideline"
app:layout_constraintTop_toTopOf="@id/keyboard_guideline" />
<View
android:id="@+id/nav_bar"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="@id/navigation_bar_guideline"
app:layout_constraintBottom_toBottomOf="parent" />
<androidx.fragment.app.FragmentContainerView
android:id="@+id/emoji_search_container"
android:layout_width="0dp"