Ver Fonte

fix:阅读界面切换深浅色后,排版问题 (#1576)

fansan há 4 meses atrás
pai
commit
f4bb4a37bc

+ 2 - 0
app/src/main/java/io/legado/app/help/config/ReadBookConfig.kt

@@ -36,6 +36,8 @@ import kotlin.reflect.KProperty
 @Suppress("ConstPropertyName")
 @Keep
 object ReadBookConfig {
+    var lastNavigationBarHeight: Int = 0
+
     private val readStyleRepository: ReadStyleRepository
         get() = GlobalContext.get().get()
 

+ 17 - 2
app/src/main/java/io/legado/app/ui/book/read/page/PageView.kt

@@ -26,13 +26,14 @@ import io.legado.app.ui.book.read.page.entities.TextPos
 import io.legado.app.ui.book.read.page.provider.ChapterProvider
 import io.legado.app.ui.config.readConfig.ReadConfig
 import io.legado.app.ui.widget.BatteryView
+import androidx.core.view.updateLayoutParams
 import io.legado.app.utils.activity
-import io.legado.app.utils.applyNavigationBarPadding
 import io.legado.app.utils.applyStatusBarPadding
 import io.legado.app.utils.canvasrecorder.CanvasRecorder
 import io.legado.app.utils.dpToPx
 import io.legado.app.utils.gone
 import io.legado.app.utils.isContentScheme
+import io.legado.app.utils.navigationBarHeight
 import io.legado.app.utils.setOnApplyWindowInsetsListenerCompat
 import io.legado.app.utils.statusBarHeight
 import splitties.views.backgroundColor
@@ -87,7 +88,21 @@ class PageView(
         callBack?.let { binding.contentTextView.setCallBack(it) }
         upStyle()
         binding.vwStatusBar.applyStatusBarPadding()
-        binding.vwNavigationBar.applyNavigationBarPadding()
+        if (ReadBookConfig.lastNavigationBarHeight > 0) {
+            binding.vwNavigationBar.updateLayoutParams {
+                height = ReadBookConfig.lastNavigationBarHeight
+            }
+        }
+        binding.vwNavigationBar.setOnApplyWindowInsetsListenerCompat { v, windowInsets ->
+            val navHeight = windowInsets.navigationBarHeight
+            if (navHeight > 0) {
+                ReadBookConfig.lastNavigationBarHeight = navHeight
+            }
+            v.updateLayoutParams {
+                height = navHeight
+            }
+            windowInsets
+        }
     }
 
     override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {