diff --git a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt index 7a073816..962afaea 100644 --- a/app/src/main/java/net/vonforst/evmap/MapsActivity.kt +++ b/app/src/main/java/net/vonforst/evmap/MapsActivity.kt @@ -84,10 +84,10 @@ class MapsActivity : AppCompatActivity(), val navView = findViewById(R.id.nav_view) navView.setupWithNavController(navController) - val header = navView.getHeaderView(0) - ViewCompat.setOnApplyWindowInsetsListener(header) { v, insets -> - v.setPadding(0, insets.getInsets(WindowInsetsCompat.Type.statusBars()).top, 0, 0) - insets + ViewCompat.setOnApplyWindowInsetsListener(navView) { v, insets -> + val header = navView.getHeaderView(0) + header.setPadding(0, insets.getInsets(WindowInsetsCompat.Type.statusBars()).top, 0, 0) + WindowInsetsCompat.CONSUMED } prefs = PreferenceDataSource(this) 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 2372c422..671c694c 100644 --- a/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt +++ b/app/src/main/java/net/vonforst/evmap/fragment/MapFragment.kt @@ -23,10 +23,7 @@ import androidx.appcompat.app.AlertDialog import androidx.appcompat.widget.PopupMenu import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat -import androidx.core.view.MenuCompat -import androidx.core.view.doOnLayout -import androidx.core.view.doOnNextLayout -import androidx.core.view.updateLayoutParams +import androidx.core.view.* import androidx.databinding.DataBindingUtil import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels @@ -116,6 +113,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac private var searchResultIcon: BitmapDescriptor? = null private var connectionErrorSnackbar: Snackbar? = null private var previousChargepointIds: Set? = null + private var mapTopPadding: Int = 0 private lateinit var clusterIconGenerator: ClusterIconGenerator private lateinit var chargerIconGenerator: ChargerIconGenerator @@ -201,19 +199,21 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac setHasOptionsMenu(true) - binding.root.setOnApplyWindowInsetsListener { _, insets -> + ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, insets -> + ViewCompat.onApplyWindowInsets(binding.root, insets) + + val systemWindowInsetTop = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top binding.detailAppBar.toolbar.updateLayoutParams { - topMargin = insets.systemWindowInsetTop + topMargin = systemWindowInsetTop } - // margin of layers button + // margin of layers button: status bar height + toolbar height + margin val density = resources.displayMetrics.density - // status bar height + toolbar height + margin val margin = if (binding.toolbarContainer.layoutParams.width == ViewGroup.LayoutParams.MATCH_PARENT) { - insets.systemWindowInsetTop + (48 * density).toInt() + (28 * density).toInt() + systemWindowInsetTop + (48 * density).toInt() + (28 * density).toInt() } else { - insets.systemWindowInsetTop + (12 * density).toInt() + systemWindowInsetTop + (12 * density).toInt() } binding.fabLayers.updateLayoutParams { topMargin = margin @@ -221,6 +221,11 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac binding.layersSheet.updateLayoutParams { topMargin = margin } + + // set map padding so that compass is not obstructed by toolbar + mapTopPadding = systemWindowInsetTop + (48 * density).toInt() + (16 * density).toInt() + map?.setPadding(0, mapTopPadding, 0, 0) + insets } @@ -888,7 +893,7 @@ class MapFragment : Fragment(), OnMapReadyCallback, MapsActivity.FragmentCallbac map.setTrafficEnabled(vm.mapTrafficEnabled.value ?: false) // set padding so that compass is not obstructed by toolbar - map.setPadding(0, binding.toolbarContainer.height, 0, 0) + map.setPadding(0, mapTopPadding, 0, 0) val mode = resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK map.setMapStyle( diff --git a/app/src/main/res/layout/activity_maps.xml b/app/src/main/res/layout/activity_maps.xml index 578ae26a..b6604152 100644 --- a/app/src/main/res/layout/activity_maps.xml +++ b/app/src/main/res/layout/activity_maps.xml @@ -3,7 +3,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:fitsSystemWindows="true"> \ No newline at end of file diff --git a/app/src/main/res/layout/nav_header.xml b/app/src/main/res/layout/nav_header.xml index 19551f3a..2cff6112 100644 --- a/app/src/main/res/layout/nav_header.xml +++ b/app/src/main/res/layout/nav_header.xml @@ -3,7 +3,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingTop="24dp" - android:fitsSystemWindows="true" android:id="@+id/nav_header">