fix(ui): improve visibility handling for IME in NativeEditorToolbarPlugin

This commit is contained in:
charlie
2026-05-14 14:10:23 +08:00
parent 8a2983f9e1
commit 7e64a03c90

View File

@@ -182,7 +182,9 @@ private class EditorToolbarView(context: android.content.Context) : FrameLayout(
) {
val imeInsets = insets.getInsets(WindowInsetsCompat.Type.ime())
val navInsets = insets.getInsets(WindowInsetsCompat.Type.navigationBars())
val coveredBySystemUi = if (insets.isVisible(WindowInsetsCompat.Type.ime())) {
val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
updateVisibilityForIme(imeVisible)
val coveredBySystemUi = if (imeVisible) {
bottomOverlap(root, decorView, imeInsets.bottom)
} else {
bottomOverlap(root, decorView, navInsets.bottom)
@@ -190,6 +192,13 @@ private class EditorToolbarView(context: android.content.Context) : FrameLayout(
updateBottomMargin(coveredBySystemUi + margin)
}
private fun updateVisibilityForIme(imeVisible: Boolean) {
val targetVisibility = if (imeVisible) VISIBLE else GONE
if (visibility != targetVisibility) {
visibility = targetVisibility
}
}
private fun bottomOverlap(root: View, decorView: View, bottomInset: Int): Int {
if (bottomInset <= 0 || root.height <= 0) return 0