summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-03-23 14:05:11 +0100
committerByteHamster <info@bytehamster.com>2020-03-23 14:33:30 +0100
commit5ad7228b4e8650d1fa84bf28db8d810dd0b4aebf (patch)
treef05fca1307f18beb7ed4984f2233252b54779233 /app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
parent6b79daacfe72b54bf48f46fdfde7b8a2515e3a58 (diff)
downloadAntennaPod-5ad7228b4e8650d1fa84bf28db8d810dd0b4aebf.zip
Going down the BottomSheetBehavior rabbit hole...
BottomSheetBehavior only supports one scrolling child. Add support for a ViewPager. ViewPager.getChildAt sometimes does not match the actual position. Make sure that it keeps all children using setOffscreenPageLimit
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
index d1c073cac..3be79a094 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java
@@ -16,7 +16,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
-import androidx.fragment.app.FragmentStatePagerAdapter;
+import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import de.danoeh.antennapod.R;
@@ -119,6 +119,14 @@ public class AudioPlayerFragment extends Fragment implements
pager = root.findViewById(R.id.pager);
AudioPlayerPagerAdapter pagerAdapter = new AudioPlayerPagerAdapter(getFragmentManager());
pager.setAdapter(pagerAdapter);
+ // Required for getChildAt(int) in ViewPagerBottomSheetBehavior to return the correct page
+ pager.setOffscreenPageLimit(NUM_CONTENT_FRAGMENTS);
+ pager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+ @Override
+ public void onPageSelected(int position) {
+ pager.post(() -> ((MainActivity) getActivity()).getBottomSheet().updateScrollingChild());
+ }
+ });
pageIndicator = root.findViewById(R.id.page_indicator);
pageIndicator.setViewPager(pager);
pageIndicator.setOnClickListener(v ->
@@ -468,7 +476,7 @@ public class AudioPlayerFragment extends Fragment implements
return false;
}
- private static class AudioPlayerPagerAdapter extends FragmentStatePagerAdapter {
+ private static class AudioPlayerPagerAdapter extends FragmentPagerAdapter {
private static final String TAG = "AudioPlayerPagerAdapter";
public AudioPlayerPagerAdapter(FragmentManager fm) {