From e76cae016ef64b96862b372b2a0e80c564d9f5fd Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Fri, 3 Jan 2025 15:21:20 +0100 Subject: [PATCH] fix(platform): Fix edge to edge glitch in MainActivity Refs: #1713 Signed-off-by: Stefan Niedermann --- .../nextcloud/deck/ui/main/MainActivity.java | 27 ++++++++++++ app/src/main/res/layout/activity_main.xml | 43 ++++++++++--------- .../fragment_card_edit_tab_comments.xml | 3 +- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/main/MainActivity.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/main/MainActivity.java index f8b193d21..1564faa26 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/main/MainActivity.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/main/MainActivity.java @@ -16,6 +16,7 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import androidx.activity.OnBackPressedCallback; import androidx.activity.result.ActivityResultLauncher; @@ -30,10 +31,12 @@ import androidx.appcompat.widget.PopupMenu; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; +import androidx.core.graphics.Insets; import androidx.core.graphics.drawable.DrawableCompat; import androidx.core.splashscreen.SplashScreen; import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; @@ -243,6 +246,28 @@ protected void onCreate(Bundle savedInstanceState) { drawerMenuInflater = new DrawerMenuInflater<>(this, binding.navigationView.getMenu()); + ViewCompat.setOnApplyWindowInsetsListener(binding.navigationView, (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + final var mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + mlp.topMargin = insets.top; + mlp.leftMargin = insets.left; + mlp.bottomMargin = insets.bottom; + mlp.rightMargin = insets.right; + v.setLayoutParams(mlp); + return WindowInsetsCompat.CONSUMED; + }); + ViewCompat.setOnApplyWindowInsetsListener(binding.fab, (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + final var mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + final var defaultMargin = getResources().getDimensionPixelSize(R.dimen.fab_margin); + mlp.topMargin = insets.top + defaultMargin; + mlp.leftMargin = insets.left + defaultMargin; + mlp.bottomMargin = insets.bottom + defaultMargin; + mlp.rightMargin = insets.right + defaultMargin; + v.setLayoutParams(mlp); + return WindowInsetsCompat.CONSUMED; + }); + preferencesViewModel.isDebugModeEnabled$().observe(this, enabled -> headerBinding.copyDebugLogs.setVisibility(enabled ? View.VISIBLE : View.GONE)); filterViewModel.hasActiveFilter().observe(this, hasActiveFilter -> { final var menu = binding.toolbar.getMenu(); @@ -506,6 +531,8 @@ private void applyBoardTheme(@ColorInt int color) { utils.deck.themeSearchBar(binding.toolbar); utils.deck.themeSearchView(binding.searchView); + utils.deck.themeAppBarLayoutAndStatusBarWithBackground(binding.appBarLayout); +// utils.deck.themeStatusBar(this, binding.appBarLayout); utils.deck.themeTabLayoutOnTransparent(binding.stackTitles); utils.deck.themeEmptyContentView(binding.emptyContentViewStacks); utils.deck.themeEmptyContentView(binding.emptyContentViewSearchNoTerm); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4f4c813b9..5daf49309 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -4,8 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" - android:layout_height="match_parent" - android:fitsSystemWindows="true"> + android:layout_height="match_parent"> + + + + + + + android:layout_height="match_parent"> + android:layout_height="wrap_content" /> - - - - - - + app:icon="@drawable/ic_add_24dp" + tools:visibility="visible" /> + android:orientation="vertical" + android:fitsSystemWindows="true">