diff options
author | Harsh Shandilya <me@msfjarvis.dev> | 2020-05-29 12:25:52 +0530 |
---|---|---|
committer | Harsh Shandilya <me@msfjarvis.dev> | 2020-05-29 12:25:52 +0530 |
commit | 4dff537d21b868da40ac190b4ae196e814d9439d (patch) | |
tree | d19c21bd24f88e6e88820446d3b3ab36955777ea | |
parent | 761c2ade4a498ed91b5a78852f0f2eb954afa0f6 (diff) |
ui: address new databinding requirements
Layouts in differing configurations must agree on their root tags, so we give
both copies of main_activity the same root ID, and adjust the check for
two-pane layout to simply test for nullability. This also changes the inset
dispatch code to use ViewCompat and WindowInsetsCompat since they will adjust
insets based on the SDK level allowing us to abstract away that concern.
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
-rw-r--r-- | ui/src/main/java/com/wireguard/android/activity/MainActivity.kt | 14 | ||||
-rw-r--r-- | ui/src/main/res/layout-sw600dp/main_activity.xml | 1 | ||||
-rw-r--r-- | ui/src/main/res/layout/main_activity.xml | 2 |
3 files changed, 9 insertions, 8 deletions
diff --git a/ui/src/main/java/com/wireguard/android/activity/MainActivity.kt b/ui/src/main/java/com/wireguard/android/activity/MainActivity.kt index 237a75f4..f567e763 100644 --- a/ui/src/main/java/com/wireguard/android/activity/MainActivity.kt +++ b/ui/src/main/java/com/wireguard/android/activity/MainActivity.kt @@ -9,8 +9,9 @@ import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View -import android.widget.LinearLayout import androidx.appcompat.app.ActionBar +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction import com.wireguard.android.R @@ -55,16 +56,15 @@ class MainActivity : BaseActivity(), FragmentManager.OnBackStackChangedListener super.onCreate(savedInstanceState) setContentView(R.layout.main_activity) actionBar = supportActionBar - isTwoPaneLayout = findViewById<View>(R.id.master_detail_wrapper) is LinearLayout + isTwoPaneLayout = findViewById<View?>(R.id.master_detail_wrapper) != null supportFragmentManager.addOnBackStackChangedListener(this) onBackStackChanged() // Dispatch insets on back stack change // This is required to ensure replaced fragments are also able to consume insets - findViewById<View>(R.id.master_detail_wrapper).setOnApplyWindowInsetsListener { _, insets -> - val fragmentManager = supportFragmentManager - fragmentManager.addOnBackStackChangedListener { - fragmentManager.fragments.forEach { - it.requireView().dispatchApplyWindowInsets(insets) + findViewById<View>(R.id.main_activity_container).setOnApplyWindowInsetsListener { _, insets -> + supportFragmentManager.addOnBackStackChangedListener { + supportFragmentManager.fragments.forEach { + ViewCompat.dispatchApplyWindowInsets(it.requireView(), WindowInsetsCompat.toWindowInsetsCompat(insets)) } } insets diff --git a/ui/src/main/res/layout-sw600dp/main_activity.xml b/ui/src/main/res/layout-sw600dp/main_activity.xml index 00fa1c49..b5ce34a4 100644 --- a/ui/src/main/res/layout-sw600dp/main_activity.xml +++ b/ui/src/main/res/layout-sw600dp/main_activity.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/main_activity_container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".activity.MainActivity"> diff --git a/ui/src/main/res/layout/main_activity.xml b/ui/src/main/res/layout/main_activity.xml index 89be4fe4..a970d8e2 100644 --- a/ui/src/main/res/layout/main_activity.xml +++ b/ui/src/main/res/layout/main_activity.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" - android:id="@+id/master_detail_wrapper" + android:id="@+id/main_activity_container" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" |