diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ContextExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ContextExtensions.kt
index cae26c73c..d1f27f793 100644
--- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ContextExtensions.kt
+++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ContextExtensions.kt
@@ -21,9 +21,14 @@ package org.kiwix.kiwixmobile.core.extensions
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
+import android.graphics.Bitmap
+import android.graphics.Canvas
+import android.graphics.drawable.BitmapDrawable
+import android.graphics.drawable.Drawable
import android.util.TypedValue
import android.widget.Toast
import androidx.annotation.AttrRes
+import androidx.core.content.ContextCompat
import org.kiwix.kiwixmobile.core.base.BaseBroadcastReceiver
import java.util.Locale
@@ -59,3 +64,40 @@ fun Context.getAttribute(@AttrRes attributeRes: Int) = with(TypedValue()) {
else
throw RuntimeException("invalid attribute $attributeRes")
}
+
+fun Context.getResizedDrawable(resourceId: Int, width: Int, height: Int): Drawable? {
+ val drawable = ContextCompat.getDrawable(this, resourceId)
+
+ return if (drawable != null) {
+ val bitmap = Bitmap.createScaledBitmap(
+ getBitmapFromDrawable(drawable),
+ width,
+ height,
+ false
+ )
+
+ BitmapDrawable(resources, bitmap).apply {
+ bounds = drawable.bounds
+ }
+ } else {
+ null
+ }
+}
+
+fun Context.getBitmapFromDrawable(drawable: Drawable): Bitmap {
+ if (drawable is BitmapDrawable) {
+ return drawable.bitmap
+ }
+
+ val bitmap = Bitmap.createBitmap(
+ drawable.intrinsicWidth,
+ drawable.intrinsicHeight,
+ Bitmap.Config.ARGB_8888
+ )
+ val canvas = Canvas(bitmap)
+ drawable.setBounds(0, 0, canvas.width, canvas.height)
+ drawable.draw(canvas)
+
+ return bitmap
+}
+
diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml
index b81eed089..b35232693 100644
--- a/core/src/main/res/values/dimens.xml
+++ b/core/src/main/res/values/dimens.xml
@@ -20,4 +20,5 @@
25dp
48dp
+ 36dp
diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt
index e117b9146..1abb7c256 100644
--- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt
+++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/main/CustomReaderFragment.kt
@@ -29,6 +29,7 @@ import androidx.drawerlayout.widget.DrawerLayout
import androidx.navigation.fragment.findNavController
import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.setupDrawerToggle
+import org.kiwix.kiwixmobile.core.extensions.getResizedDrawable
import org.kiwix.kiwixmobile.core.extensions.isFileExist
import org.kiwix.kiwixmobile.core.main.CoreReaderFragment
import org.kiwix.kiwixmobile.core.main.MainMenu
@@ -57,6 +58,7 @@ class CustomReaderFragment : CoreReaderFragment() {
var dialogShower: DialogShower? = null
private var permissionRequiredDialog: Dialog? = null
private var appSettingsLaunched = false
+
@Suppress("NestedBlockDepth")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -77,7 +79,11 @@ class CustomReaderFragment : CoreReaderFragment() {
if (BuildConfig.DISABLE_TITLE) {
// if the title is disable then set the app logo to hamburger icon,
// see https://github.com/kiwix/kiwix-android/issues/3528#issuecomment-1814905330
- it.setNavigationIcon(R.mipmap.ic_launcher)
+ val iconSize =
+ resources.getDimensionPixelSize(org.kiwix.kiwixmobile.core.R.dimen.hamburger_icon_size)
+ getResizedDrawable(R.mipmap.ic_launcher, iconSize, iconSize)?.let { drawable ->
+ it.navigationIcon = drawable
+ }
}
}
}