Fixed: The navigationView and rightDrawerView was overlapping on statusBar.

This commit is contained in:
MohitMaliFtechiz 2024-12-27 11:37:57 +05:30 committed by Kelson
parent 53d773846c
commit 82ba9f3299
4 changed files with 28 additions and 16 deletions

View File

@ -51,6 +51,7 @@ import org.kiwix.kiwixmobile.core.R.string
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
import org.kiwix.kiwixmobile.core.dao.NewBookDao import org.kiwix.kiwixmobile.core.dao.NewBookDao
import org.kiwix.kiwixmobile.core.downloader.downloadManager.DOWNLOAD_NOTIFICATION_TITLE import org.kiwix.kiwixmobile.core.downloader.downloadManager.DOWNLOAD_NOTIFICATION_TITLE
import org.kiwix.kiwixmobile.core.extensions.setTopMarginToViewForEdgeToEdgeMode
import org.kiwix.kiwixmobile.core.extensions.toast import org.kiwix.kiwixmobile.core.extensions.toast
import org.kiwix.kiwixmobile.core.main.ACTION_NEW_TAB import org.kiwix.kiwixmobile.core.main.ACTION_NEW_TAB
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
@ -122,10 +123,13 @@ class KiwixMainActivity : CoreMainActivity() {
setContentView(activityKiwixMainBinding.root) setContentView(activityKiwixMainBinding.root)
navController.addOnDestinationChangedListener(finishActionModeOnDestinationChange) navController.addOnDestinationChangedListener(finishActionModeOnDestinationChange)
activityKiwixMainBinding.drawerNavView.setupWithNavController(navController) activityKiwixMainBinding.drawerNavView.apply {
activityKiwixMainBinding.drawerNavView.setNavigationItemSelectedListener { item -> setupWithNavController(navController)
closeNavigationDrawer() setNavigationItemSelectedListener { item ->
onNavigationItemSelected(item) closeNavigationDrawer()
onNavigationItemSelected(item)
}
setTopMarginToViewForEdgeToEdgeMode()
} }
activityKiwixMainBinding.bottomNavView.setupWithNavController(navController) activityKiwixMainBinding.bottomNavView.setupWithNavController(navController)
lifecycleScope.launch { lifecycleScope.launch {
@ -134,6 +138,7 @@ class KiwixMainActivity : CoreMainActivity() {
handleZimFileIntent(intent) handleZimFileIntent(intent)
handleNotificationIntent(intent) handleNotificationIntent(intent)
handleGetContentIntent(intent) handleGetContentIntent(intent)
readerTableOfContentsDrawer.setTopMarginToViewForEdgeToEdgeMode()
} }
private suspend fun migrateInternalToPublicAppDirectory() { private suspend fun migrateInternalToPublicAppDirectory() {

View File

@ -21,16 +21,14 @@ package org.kiwix.kiwixmobile.core.base
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.extensions.enableEdgeToEdgeMode import org.kiwix.kiwixmobile.core.extensions.enableEdgeToEdgeMode
import org.kiwix.kiwixmobile.core.extensions.getToolbarNavigationIcon import org.kiwix.kiwixmobile.core.extensions.getToolbarNavigationIcon
import org.kiwix.kiwixmobile.core.extensions.setToolTipWithContentDescription import org.kiwix.kiwixmobile.core.extensions.setToolTipWithContentDescription
import org.kiwix.kiwixmobile.core.extensions.setTopMarginToViewForEdgeToEdgeMode
/** /**
* All fragments should inherit from this fragment. * All fragments should inherit from this fragment.
@ -52,15 +50,7 @@ abstract class BaseFragment : Fragment() {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
enableEdgeToEdgeMode() enableEdgeToEdgeMode()
setupToolbar() setupToolbar()
this.view?.let { this.view.setTopMarginToViewForEdgeToEdgeMode()
ViewCompat.setOnApplyWindowInsetsListener(it) { view, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
val layoutParams = view.layoutParams as? ViewGroup.MarginLayoutParams
layoutParams?.topMargin = insets.top
view.layoutParams = layoutParams
WindowInsetsCompat.CONSUMED
}
}
} }
// Setup toolbar to handle common back pressed event // Setup toolbar to handle common back pressed event

View File

@ -21,10 +21,12 @@ package org.kiwix.kiwixmobile.core.extensions
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.os.Build import android.os.Build
import android.view.View import android.view.View
import android.view.ViewGroup
import android.view.Window import android.view.Window
import android.view.WindowManager import android.view.WindowManager
import androidx.annotation.ColorInt import androidx.annotation.ColorInt
import androidx.appcompat.widget.TooltipCompat import androidx.appcompat.widget.TooltipCompat
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
@ -119,3 +121,15 @@ fun View.closeFullScreenMode(window: Window) {
clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN) clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
} }
} }
fun View?.setTopMarginToViewForEdgeToEdgeMode() {
this?.let {
ViewCompat.setOnApplyWindowInsetsListener(it) { view, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
val layoutParams = view.layoutParams as? ViewGroup.MarginLayoutParams
layoutParams?.topMargin = insets.top
view.layoutParams = layoutParams
WindowInsetsCompat.CONSUMED
}
}
}

View File

@ -38,6 +38,7 @@ import org.kiwix.kiwixmobile.custom.BuildConfig
import org.kiwix.kiwixmobile.custom.R import org.kiwix.kiwixmobile.custom.R
import org.kiwix.kiwixmobile.core.R.string import org.kiwix.kiwixmobile.core.R.string
import org.kiwix.kiwixmobile.core.R.drawable import org.kiwix.kiwixmobile.core.R.drawable
import org.kiwix.kiwixmobile.core.extensions.setTopMarginToViewForEdgeToEdgeMode
import org.kiwix.kiwixmobile.custom.customActivityComponent import org.kiwix.kiwixmobile.custom.customActivityComponent
import org.kiwix.kiwixmobile.custom.databinding.ActivityCustomMainBinding import org.kiwix.kiwixmobile.custom.databinding.ActivityCustomMainBinding
@ -84,6 +85,8 @@ class CustomMainActivity : CoreMainActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
activityCustomMainBinding = ActivityCustomMainBinding.inflate(layoutInflater) activityCustomMainBinding = ActivityCustomMainBinding.inflate(layoutInflater)
setContentView(activityCustomMainBinding.root) setContentView(activityCustomMainBinding.root)
drawerNavView.setTopMarginToViewForEdgeToEdgeMode()
readerTableOfContentsDrawer.setTopMarginToViewForEdgeToEdgeMode()
if (savedInstanceState != null) { if (savedInstanceState != null) {
return return
} }