diff --git a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
index 2cc61c26..ec95d307 100644
--- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
+++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt
@@ -138,6 +138,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MenuProvider {
private var connectionErrorSnackbar: Snackbar? = null
private var mapTopPadding: Int = 0
private var popupMenu: PopupMenu? = null
+ private var insetBottom: Int = 0
private lateinit var favToggle: MenuItem
private val backPressedCallback = object : OnBackPressedCallback(false) {
override fun handleOnBackPressed() {
@@ -248,6 +249,10 @@ class MapFragment : Fragment(), OnMapReadyCallback, MenuProvider {
// and cause an infinite loop. So we rely on onMapReady being called later than
// onApplyWindowInsets.
+ insetBottom = insets.getInsets(WindowInsetsCompat.Type.navigationBars()).bottom
+ binding.navBarScrim.layoutParams.height = insetBottom
+ updatePeekHeight()
+
insets
}
@@ -262,6 +267,10 @@ class MapFragment : Fragment(), OnMapReadyCallback, MenuProvider {
return binding.root
}
+ private fun updatePeekHeight() {
+ bottomSheetBehavior.peekHeight = binding.detailView.topPart.bottom + insetBottom
+ }
+
private fun getMapProvider(provider: String) = when (provider) {
"mapbox" -> MapFactory.MAPLIBRE
"google" -> MapFactory.GOOGLE
@@ -291,7 +300,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MenuProvider {
}
binding.detailView.topPart.doOnNextLayout {
- bottomSheetBehavior.peekHeight = binding.detailView.topPart.bottom
+ updatePeekHeight()
vm.bottomSheetState.value?.let { bottomSheetBehavior.state = it }
}
bottomSheetBehavior.isCollapsible = bottomSheetCollapsible
@@ -626,6 +635,14 @@ class MapFragment : Fragment(), OnMapReadyCallback, MenuProvider {
min(bottomSheetBehavior.peekHeight, height)
)
}
+ println(slideOffset)
+ if (bottomSheetBehavior.state != STATE_HIDDEN) {
+ binding.navBarScrim.visibility = View.VISIBLE
+ binding.navBarScrim.translationY =
+ (if (slideOffset < 0f) -slideOffset else 2 * slideOffset) * binding.navBarScrim.height
+ } else {
+ binding.navBarScrim.visibility = View.INVISIBLE
+ }
}
override fun onStateChanged(bottomSheet: View, newState: Int) {
diff --git a/app/src/main/res/layout/fragment_map.xml b/app/src/main/res/layout/fragment_map.xml
index 19a09b6e..a108958c 100644
--- a/app/src/main/res/layout/fragment_map.xml
+++ b/app/src/main/res/layout/fragment_map.xml
@@ -247,6 +247,15 @@
app:layout_behavior="@string/hide_on_scroll_fab_behavior"
android:theme="@style/NoElevationOverlay" />
+
+