diff --git a/app/src/main/res/layout/activity_kiwix_main.xml b/app/src/main/res/layout/activity_kiwix_main.xml
index 9679f3981..111f83368 100644
--- a/app/src/main/res/layout/activity_kiwix_main.xml
+++ b/app/src/main/res/layout/activity_kiwix_main.xml
@@ -21,8 +21,7 @@
android:id="@+id/navigation_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:contentDescription="@string/open_drawer"
- android:fitsSystemWindows="true">
+ android:contentDescription="@string/open_drawer">
@@ -62,7 +60,6 @@
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="end"
- android:fitsSystemWindows="true"
app:headerLayout="@layout/drawer_right" />
diff --git a/app/src/main/res/layout/activity_language.xml b/app/src/main/res/layout/activity_language.xml
index 00aed9c19..23bf4362b 100644
--- a/app/src/main/res/layout/activity_language.xml
+++ b/app/src/main/res/layout/activity_language.xml
@@ -1,24 +1,23 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ app:layout_constraintTop_toBottomOf="@id/app_bar"
+ tools:listitem="@layout/item_language" />
diff --git a/app/src/main/res/layout/fragment_destination_library.xml b/app/src/main/res/layout/fragment_destination_library.xml
index 31086b8dd..96a39dc76 100644
--- a/app/src/main/res/layout/fragment_destination_library.xml
+++ b/app/src/main/res/layout/fragment_destination_library.xml
@@ -21,8 +21,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fitsSystemWindows="true">
+ android:layout_height="match_parent">
diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt
index 487895910..8de3a54d4 100644
--- a/buildSrc/src/main/kotlin/Libs.kt
+++ b/buildSrc/src/main/kotlin/Libs.kt
@@ -1,5 +1,3 @@
-import io.opencensus.trace.Tracing
-
/**
* Generated by https://github.com/jmfayard/buildSrcVersions
*
@@ -308,6 +306,8 @@ object Libs {
*/
const val core_ktx: String = "androidx.core:core-ktx:" + Versions.core_ktx
+ const val androidx_activity: String = "androidx.activity:activity:" + Versions.androidx_activity
+
/**
* https://github.com/kiwix/java-libkiwix
*/
diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt
index bced3b36c..c0cd580ed 100644
--- a/buildSrc/src/main/kotlin/Versions.kt
+++ b/buildSrc/src/main/kotlin/Versions.kt
@@ -90,6 +90,8 @@ object Versions {
const val core_ktx: String = "1.15.0"
+ const val androidx_activity: String = "1.9.3"
+
const val libkiwix: String = "2.2.3"
const val material: String = "1.12.0"
diff --git a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt
index 13daa7d14..f6502a999 100644
--- a/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt
+++ b/buildSrc/src/main/kotlin/plugin/AllProjectConfigurer.kt
@@ -233,6 +233,7 @@ class AllProjectConfigurer {
kapt(Libs.roomCompiler)
implementation(Libs.tracing)
implementation(Libs.fetchOkhttp)
+ implementation(Libs.androidx_activity)
}
}
}
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt
index 718f6476c..6b1484435 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseActivity.kt
@@ -17,8 +17,13 @@
*/
package org.kiwix.kiwixmobile.core.base
+import android.graphics.Color
+import android.os.Build
import android.os.Bundle
+import androidx.activity.SystemBarStyle
+import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
+import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.changeStatusBarAndNavigationBarColorInAndroid15AndAbove
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
import javax.inject.Inject
@@ -29,7 +34,14 @@ open class BaseActivity : AppCompatActivity() {
lateinit var sharedPreferenceUtil: SharedPreferenceUtil
override fun onCreate(savedInstanceState: Bundle?) {
+ enableEdgeToEdge(
+ statusBarStyle = SystemBarStyle.dark(Color.BLACK),
+ navigationBarStyle = SystemBarStyle.dark(Color.BLACK)
+ )
super.onCreate(savedInstanceState)
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+ changeStatusBarAndNavigationBarColorInAndroid15AndAbove()
+ }
LanguageUtils.handleLocaleChange(this, sharedPreferenceUtil)
}
}
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseFragment.kt
index 77e18b557..4f6158936 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseFragment.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/base/BaseFragment.kt
@@ -21,10 +21,14 @@ package org.kiwix.kiwixmobile.core.base
import android.content.Context
import android.os.Bundle
import android.view.View
+import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import org.kiwix.kiwixmobile.core.R
+import org.kiwix.kiwixmobile.core.extensions.enableEdgeToEdgeMode
import org.kiwix.kiwixmobile.core.extensions.getToolbarNavigationIcon
import org.kiwix.kiwixmobile.core.extensions.setToolTipWithContentDescription
@@ -46,7 +50,17 @@ abstract class BaseFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ enableEdgeToEdgeMode()
setupToolbar()
+ this.view?.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
+ }
+ }
}
// Setup toolbar to handle common back pressed event
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt
index 7d4f2515c..f29d2d3c5 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt
@@ -29,6 +29,8 @@ import android.os.Bundle
import android.os.Environment
import android.view.Menu
import android.view.MenuItem
+import android.view.WindowInsetsController
+import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.view.ActionMode
import androidx.appcompat.widget.Toolbar
@@ -199,4 +201,21 @@ object ActivityExtensions {
val isWideEnough = configuration.smallestScreenWidthDp >= 600
return isLargeOrXLarge && isWideEnough
}
+
+ /**
+ * This method is for setting the statusBar color for Android 15 and above.
+ * Since in Android 15 the setStatusBarColor method is deprecated and not works anymore.
+ */
+ @RequiresApi(Build.VERSION_CODES.VANILLA_ICE_CREAM)
+ fun Activity.changeStatusBarAndNavigationBarColorInAndroid15AndAbove() {
+ window?.apply {
+ // Set the white color to icon since the statusBar color is black.
+ decorView.windowInsetsController?.setSystemBarsAppearance(
+ 0,
+ WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
+ )
+ insetsController?.hide(android.view.WindowInsets.Type.statusBars())
+ insetsController?.show(android.view.WindowInsets.Type.statusBars())
+ }
+ }
}
diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FragmentExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FragmentExtensions.kt
index 2f7dd640c..f0f692ecc 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FragmentExtensions.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/FragmentExtensions.kt
@@ -19,10 +19,12 @@
package org.kiwix.kiwixmobile.core.extensions
import android.content.Context
+import android.os.Build
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.widget.Toast
import androidx.core.view.ViewCompat
+import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModel
@@ -55,3 +57,12 @@ fun View.closeKeyboard() {
}
val Fragment.coreMainActivity get() = activity as CoreMainActivity
+
+fun Fragment.enableEdgeToEdgeMode() {
+ activity?.window?.let {
+ WindowCompat.setDecorFitsSystemWindows(
+ it,
+ Build.VERSION.SDK_INT < Build.VERSION_CODES.Q
+ )
+ }
+}
diff --git a/core/src/main/res/layout/drawer_right.xml b/core/src/main/res/layout/drawer_right.xml
index e1170eccb..d2aa92e1a 100644
--- a/core/src/main/res/layout/drawer_right.xml
+++ b/core/src/main/res/layout/drawer_right.xml
@@ -4,5 +4,4 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
- android:fitsSystemWindows="true"
android:focusable="true" />
diff --git a/core/src/main/res/layout/fragment_help.xml b/core/src/main/res/layout/fragment_help.xml
index 158477da0..22f501d97 100644
--- a/core/src/main/res/layout/fragment_help.xml
+++ b/core/src/main/res/layout/fragment_help.xml
@@ -4,7 +4,6 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:fitsSystemWindows="true"
tools:context=".help.HelpFragment">
diff --git a/core/src/main/res/layout/fragment_page.xml b/core/src/main/res/layout/fragment_page.xml
index 9a47dc529..59d7c4430 100644
--- a/core/src/main/res/layout/fragment_page.xml
+++ b/core/src/main/res/layout/fragment_page.xml
@@ -3,8 +3,7 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:fitsSystemWindows="true">
+ android:layout_height="match_parent">
+ android:layout_height="match_parent">
diff --git a/core/src/main/res/layout/reader_fragment_content.xml b/core/src/main/res/layout/reader_fragment_content.xml
index b6a0ed7bc..93053de0b 100644
--- a/core/src/main/res/layout/reader_fragment_content.xml
+++ b/core/src/main/res/layout/reader_fragment_content.xml
@@ -26,8 +26,7 @@
+ android:layout_height="match_parent">
+ android:layout_height="match_parent">
+ android:layout_height="match_parent">