Dynamically obtain the status bar and navigation bar height, to automatically and correctly place the Toolbar and Map UI Controllers in MerchantsFragment.
This commit is contained in:
parent
6e5c6b50b8
commit
c7138c5e22
2 changed files with 16 additions and 4 deletions
|
@ -102,6 +102,11 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback, SearchView.OnSuggestio
|
||||||
private var showMerchantsMarkers = true
|
private var showMerchantsMarkers = true
|
||||||
private var showTellerMarkers = true
|
private var showTellerMarkers = true
|
||||||
|
|
||||||
|
// Variables used to dynamically obtain the status bar and navigation bar height, to automatically and correctly
|
||||||
|
// place the Toolbar and Map UI controllers
|
||||||
|
private var statusBarSize = 0
|
||||||
|
private var navigationBarSize = 0
|
||||||
|
|
||||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
// Hide the activity's Toolbar so that we can make the trick of the translucent navigation and status bars
|
// Hide the activity's Toolbar so that we can make the trick of the translucent navigation and status bars
|
||||||
val activityToolbar: Toolbar? = activity?.findViewById(R.id.toolbar)
|
val activityToolbar: Toolbar? = activity?.findViewById(R.id.toolbar)
|
||||||
|
@ -118,6 +123,16 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback, SearchView.OnSuggestio
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
|
||||||
|
// Dynamically obtain status bar and navigation bar heights, and account for the status bar height to add
|
||||||
|
// the correct top margin to the Toolbar and place it just below the status bar
|
||||||
|
view.setOnApplyWindowInsetsListener { v, insets ->
|
||||||
|
statusBarSize = insets.systemWindowInsetTop
|
||||||
|
navigationBarSize = insets.systemWindowInsetBottom
|
||||||
|
val layoutParams = toolbar.layoutParams as ViewGroup.MarginLayoutParams
|
||||||
|
layoutParams.topMargin = statusBarSize
|
||||||
|
insets
|
||||||
|
}
|
||||||
|
|
||||||
// Set the fragment's toolbar as the activity toolbar just for this fragment
|
// Set the fragment's toolbar as the activity toolbar just for this fragment
|
||||||
(activity as AppCompatActivity).setSupportActionBar(toolbar)
|
(activity as AppCompatActivity).setSupportActionBar(toolbar)
|
||||||
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
(activity as AppCompatActivity).supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
|
@ -343,8 +358,7 @@ class MerchantsFragment : Fragment(), OnMapReadyCallback, SearchView.OnSuggestio
|
||||||
mMap = googleMap
|
mMap = googleMap
|
||||||
|
|
||||||
// Add padding to move the controls out of the toolbar/status bar and navigation bar.
|
// Add padding to move the controls out of the toolbar/status bar and navigation bar.
|
||||||
// TODO might be necessary to convert dp to pixels
|
mMap.setPadding(0, toolbar.height + statusBarSize, 0, navigationBarSize)
|
||||||
mMap.setPadding(0, 200, 0, 100)
|
|
||||||
|
|
||||||
applyMapTheme()
|
applyMapTheme()
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,10 @@
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
tools:context=".activities.MainActivity">
|
tools:context=".activities.MainActivity">
|
||||||
|
|
||||||
<!-- TODO get the height of the status bar dynamically instead of hardcoding the 24dp-->
|
|
||||||
<androidx.appcompat.widget.Toolbar
|
<androidx.appcompat.widget.Toolbar
|
||||||
android:id="@+id/toolbar"
|
android:id="@+id/toolbar"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="?attr/actionBarSize"
|
android:layout_height="?attr/actionBarSize"
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:background="@color/colorMapToolbar"
|
android:background="@color/colorMapToolbar"
|
||||||
android:elevation="4dp"
|
android:elevation="4dp"
|
||||||
app:title="@string/title_merchants_and_tellers"
|
app:title="@string/title_merchants_and_tellers"
|
||||||
|
|
Loading…
Reference in a new issue