From 46b47bec7558c9471b8b13d8301b860a6641d512 Mon Sep 17 00:00:00 2001 From: Horis <8674809+821938089@users.noreply.github.com> Date: Sat, 7 Sep 2024 12:12:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/source/edit/BookSourceEditActivity.kt | 11 ++++++----- .../legado/app/ui/replace/edit/ReplaceEditActivity.kt | 8 ++------ .../app/ui/rss/source/edit/RssSourceEditActivity.kt | 11 ++++++----- .../legado/app/ui/widget/keyboard/KeyboardToolPop.kt | 2 +- .../io/legado/app/utils/WindowInsetsExtensions.kt | 9 +++++++++ app/src/main/res/layout/activity_rss_source_edit.xml | 1 + 6 files changed, 25 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/io/legado/app/utils/WindowInsetsExtensions.kt diff --git a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt index e47fe8076..d3fa85fa5 100644 --- a/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/source/edit/BookSourceEditActivity.kt @@ -8,7 +8,6 @@ import android.view.MenuItem import android.widget.EditText import androidx.activity.viewModels import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.tabs.TabLayout @@ -42,8 +41,10 @@ import io.legado.app.ui.widget.dialog.VariableDialog import io.legado.app.ui.widget.keyboard.KeyboardToolPop import io.legado.app.ui.widget.text.EditEntity import io.legado.app.utils.GSON +import io.legado.app.utils.imeHeight import io.legado.app.utils.isContentScheme import io.legado.app.utils.launch +import io.legado.app.utils.navigationBarHeight import io.legado.app.utils.sendToClip import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.share @@ -201,10 +202,10 @@ class BookSourceEditActivity : } }) ViewCompat.setOnApplyWindowInsetsListener(binding.recyclerView) { _, windowInsets -> - val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime() - val insets = windowInsets.getInsets(typeMask) - binding.recyclerView.bottomPadding = insets.bottom - softKeyboardTool.initialPadding = insets.bottom + val navigationBarHeight = windowInsets.navigationBarHeight + val imeHeight = windowInsets.imeHeight + binding.recyclerView.bottomPadding = if (imeHeight == 0) navigationBarHeight else 0 + softKeyboardTool.initialPadding = imeHeight windowInsets } } diff --git a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt index c34c3b732..575436a52 100644 --- a/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/replace/edit/ReplaceEditActivity.kt @@ -8,7 +8,6 @@ import android.view.MenuItem import android.widget.EditText import androidx.activity.viewModels import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope import io.legado.app.R import io.legado.app.base.VMBaseActivity @@ -17,10 +16,10 @@ import io.legado.app.databinding.ActivityReplaceEditBinding import io.legado.app.lib.dialogs.SelectItem import io.legado.app.ui.widget.keyboard.KeyboardToolPop import io.legado.app.utils.GSON +import io.legado.app.utils.imeHeight import io.legado.app.utils.sendToClip import io.legado.app.utils.showHelp import io.legado.app.utils.viewbindingdelegate.viewBinding -import splitties.views.bottomPadding /** * 编辑替换规则 @@ -93,10 +92,7 @@ class ReplaceEditActivity : showHelp("regexHelp") } ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets -> - val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime() - val insets = windowInsets.getInsets(typeMask) - binding.root.bottomPadding = insets.bottom - softKeyboardTool.initialPadding = insets.bottom + softKeyboardTool.initialPadding = windowInsets.imeHeight windowInsets } } diff --git a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt index dc9d78e23..3a73bc4cb 100644 --- a/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt @@ -7,7 +7,6 @@ import android.view.MenuItem import android.widget.EditText import androidx.activity.viewModels import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat import androidx.lifecycle.lifecycleScope import com.google.android.material.tabs.TabLayout import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel @@ -30,9 +29,11 @@ import io.legado.app.ui.widget.dialog.VariableDialog import io.legado.app.ui.widget.keyboard.KeyboardToolPop import io.legado.app.ui.widget.text.EditEntity import io.legado.app.utils.GSON +import io.legado.app.utils.imeHeight import io.legado.app.utils.isContentScheme import io.legado.app.utils.isTrue import io.legado.app.utils.launch +import io.legado.app.utils.navigationBarHeight import io.legado.app.utils.sendToClip import io.legado.app.utils.setEdgeEffectColor import io.legado.app.utils.share @@ -189,10 +190,10 @@ class RssSourceEditActivity : } }) ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets -> - val typeMask = WindowInsetsCompat.Type.navigationBars() or WindowInsetsCompat.Type.ime() - val insets = windowInsets.getInsets(typeMask) - binding.root.bottomPadding = insets.bottom - softKeyboardTool.initialPadding = insets.bottom + val navigationBarHeight = windowInsets.navigationBarHeight + val imeHeight = windowInsets.imeHeight + binding.recyclerView.bottomPadding = if (imeHeight == 0) navigationBarHeight else 0 + softKeyboardTool.initialPadding = imeHeight windowInsets } } diff --git a/app/src/main/java/io/legado/app/ui/widget/keyboard/KeyboardToolPop.kt b/app/src/main/java/io/legado/app/ui/widget/keyboard/KeyboardToolPop.kt index aca80d60d..62739bfd0 100644 --- a/app/src/main/java/io/legado/app/ui/widget/keyboard/KeyboardToolPop.kt +++ b/app/src/main/java/io/legado/app/ui/widget/keyboard/KeyboardToolPop.kt @@ -83,7 +83,7 @@ class KeyboardToolPop( } } else { mIsSoftKeyBoardShowing = false - //rootView.setPadding(0, 0, 0, 0) + rootView.setPadding(0, 0, 0, 0) if (preShowing) { dismiss() } diff --git a/app/src/main/java/io/legado/app/utils/WindowInsetsExtensions.kt b/app/src/main/java/io/legado/app/utils/WindowInsetsExtensions.kt new file mode 100644 index 000000000..7edde3f01 --- /dev/null +++ b/app/src/main/java/io/legado/app/utils/WindowInsetsExtensions.kt @@ -0,0 +1,9 @@ +package io.legado.app.utils + +import androidx.core.view.WindowInsetsCompat + +val WindowInsetsCompat.navigationBarHeight + get() = getInsets(WindowInsetsCompat.Type.navigationBars()).bottom + +val WindowInsetsCompat.imeHeight + get() = getInsets(WindowInsetsCompat.Type.ime()).bottom diff --git a/app/src/main/res/layout/activity_rss_source_edit.xml b/app/src/main/res/layout/activity_rss_source_edit.xml index 2647926c6..6ac49b7c9 100644 --- a/app/src/main/res/layout/activity_rss_source_edit.xml +++ b/app/src/main/res/layout/activity_rss_source_edit.xml @@ -67,6 +67,7 @@ android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" + android:clipToPadding="false" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" tools:listitem="@layout/item_source_edit" />