From de0f09f1e280c24b286503444211e3601aa53cf7 Mon Sep 17 00:00:00 2001 From: Hans-Peter Lehmann Date: Mon, 15 Sep 2025 22:41:23 +0200 Subject: [PATCH] Collapse subscriptions filter when scrolling down (#7990) --- .../subscriptions/SubscriptionFragment.java | 16 ++ .../res/layout/fragment_subscriptions.xml | 151 ++++++++++-------- 2 files changed, 103 insertions(+), 64 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionFragment.java index 79a541068..a77f5715f 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionFragment.java @@ -18,6 +18,8 @@ import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import com.google.android.material.appbar.AppBarLayout; +import com.google.android.material.appbar.CollapsingToolbarLayout; import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.floatingactionbutton.FloatingActionButton; import de.danoeh.antennapod.R; @@ -83,6 +85,7 @@ public class SubscriptionFragment extends Fragment private MaterialToolbar toolbar; private SwipeRefreshLayout swipeRefreshLayout; private ProgressBar progressBar; + private CollapsingToolbarLayout collapsingContainer; private boolean displayUpArrow; private Disposable disposable; @@ -132,9 +135,11 @@ public class SubscriptionFragment extends Fragment } refreshToolbarState(); + collapsingContainer = root.findViewById(R.id.collapsing_container); subscriptionRecycler = root.findViewById(R.id.subscriptions_grid); registerForContextMenu(subscriptionRecycler); subscriptionRecycler.addOnScrollListener(new LiftOnScrollListener(root.findViewById(R.id.appbar))); + subscriptionRecycler.addOnScrollListener(new LiftOnScrollListener(collapsingContainer)); subscriptionAdapter = new SubscriptionsRecyclerAdapter((MainActivity) getActivity()) { @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { @@ -428,12 +433,21 @@ public class SubscriptionFragment extends Fragment loadSubscriptionsAndTags(); } + private void setCollapsingToolbarFlags(int flags) { + AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) collapsingContainer.getLayoutParams(); + params.setScrollFlags(flags); + collapsingContainer.setLayoutParams(params); + } + @Override public void onEndSelectMode() { floatingSelectMenu.setVisibility(View.GONE); subscriptionAddButton.setVisibility(View.VISIBLE); tagsRecycler.setVisibility(tagAdapter.getItemCount() > 1 ? View.VISIBLE : View.GONE); updateFilterVisibility(); + setCollapsingToolbarFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL + | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS + | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); } @Override @@ -442,6 +456,8 @@ public class SubscriptionFragment extends Fragment subscriptionAddButton.setVisibility(View.GONE); tagsRecycler.setVisibility(tagAdapter.getItemCount() > 1 ? View.INVISIBLE : View.GONE); updateFilterVisibility(); + setCollapsingToolbarFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL + | AppBarLayout.LayoutParams.SCROLL_FLAG_EXIT_UNTIL_COLLAPSED); } public Pair getScrollPosition() { diff --git a/app/src/main/res/layout/fragment_subscriptions.xml b/app/src/main/res/layout/fragment_subscriptions.xml index c18eb0b88..aaae7bae2 100644 --- a/app/src/main/res/layout/fragment_subscriptions.xml +++ b/app/src/main/res/layout/fragment_subscriptions.xml @@ -1,10 +1,11 @@ - + android:layout_height="match_parent" + android:orientation="vertical"> - - - - - - - - - + android:layout_height="match_parent"> - + + + + + + + + + + + + + + + + + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + - + - + - + - + + + + +