From 04775fea966bbbff16b4b3fffaac78a7fc261a94 Mon Sep 17 00:00:00 2001 From: Docile-Alligator <25734209+Docile-Alligator@users.noreply.github.com> Date: Mon, 16 Jun 2025 18:41:02 -0400 Subject: [PATCH] ViewCompat.setOnApplyWindowInsetsListener in CustomThemeListingActivity and CustomThemeListingFragment. --- .../CustomThemeListingActivity.java | 42 +++++++++++++++++++ .../fragments/CustomThemeListingFragment.java | 21 ++++++++++ 2 files changed, 63 insertions(+) diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java index a0a5a39e..7207dbc0 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/activities/CustomThemeListingActivity.java @@ -17,6 +17,10 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.app.ActivityCompat; +import androidx.core.graphics.Insets; +import androidx.core.view.OnApplyWindowInsetsListener; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; @@ -109,6 +113,44 @@ public class CustomThemeListingActivity extends BaseActivity implements applyCustomTheme(); + if (isImmersiveInterface()) { + if (isChangeStatusBarIconColor()) { + addOnOffsetChangedListener(binding.appbarLayoutCustomizeThemeListingActivity); + } + + ViewCompat.setOnApplyWindowInsetsListener(binding.getRoot(), new OnApplyWindowInsetsListener() { + @NonNull + @Override + public WindowInsetsCompat onApplyWindowInsets(@NonNull View v, @NonNull WindowInsetsCompat insets) { + Insets allInsets = insets.getInsets( + WindowInsetsCompat.Type.systemBars() + | WindowInsetsCompat.Type.displayCutout() + ); + + setMargins(binding.toolbarCustomizeThemeListingActivity, + allInsets.left, + allInsets.top, + allInsets.right, + BaseActivity.IGNORE_MARGIN); + + binding.viewPager2CustomizeThemeListingActivity.setPadding( + allInsets.left, + 0, + allInsets.right, + 0 + ); + + setMargins(binding.fabCustomThemeListingActivity, + BaseActivity.IGNORE_MARGIN, + BaseActivity.IGNORE_MARGIN, + (int) Utils.convertDpToPixel(16, CustomThemeListingActivity.this) + allInsets.right, + (int) Utils.convertDpToPixel(16, CustomThemeListingActivity.this) + allInsets.bottom); + + return WindowInsetsCompat.CONSUMED; + } + }); + } + setSupportActionBar(binding.toolbarCustomizeThemeListingActivity); getSupportActionBar().setDisplayHomeAsUpEnabled(true); diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CustomThemeListingFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CustomThemeListingFragment.java index fab4d49a..cf21e75d 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CustomThemeListingFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/fragments/CustomThemeListingFragment.java @@ -13,6 +13,10 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.graphics.Insets; +import androidx.core.view.OnApplyWindowInsetsListener; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.RecyclerView; @@ -81,6 +85,23 @@ public class CustomThemeListingFragment extends Fragment { // Inflate the layout for this fragment binding = FragmentCustomThemeListingBinding.inflate(inflater, container, false); + if (activity.isImmersiveInterface()) { + ViewCompat.setOnApplyWindowInsetsListener(activity.getWindow().getDecorView(), new OnApplyWindowInsetsListener() { + @NonNull + @Override + public WindowInsetsCompat onApplyWindowInsets(@NonNull View v, @NonNull WindowInsetsCompat insets) { + Insets allInsets = insets.getInsets( + WindowInsetsCompat.Type.systemBars() + | WindowInsetsCompat.Type.displayCutout() + ); + binding.recyclerViewCustomizeThemeListingActivity.setPadding( + 0, 0, 0, allInsets.bottom + ); + return insets; + } + }); + } + if (getArguments() != null) { isOnline = getArguments().getBoolean(EXTRA_IS_ONLINE); }