diff options
author | ByteHamster <info@bytehamster.com> | 2020-03-23 14:05:11 +0100 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-03-23 14:33:30 +0100 |
commit | 5ad7228b4e8650d1fa84bf28db8d810dd0b4aebf (patch) | |
tree | f05fca1307f18beb7ed4984f2233252b54779233 /app/src/main/java/de/danoeh/antennapod/fragment/AudioPlayerFragment.java | |
parent | 6b79daacfe72b54bf48f46fdfde7b8a2515e3a58 (diff) | |
download | AntennaPod-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.java | 12 |
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) { |