BottomSheet with ViewPager and snippets?

I need an idea, like in the old version of StreetView.

refer this

I tried BottomSheetBehavior with ViewPager, but the dynamic height of its fragments does not work properly.

+6
source share
1 answer

Using CustomViewPager, we can set the fragment height

public class CustomPager extends ViewPager { private View mCurrentView; public CustomPager(Context context) { super(context); } public CustomPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mCurrentView == null) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); return; } int height = 0; mCurrentView.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = mCurrentView.getMeasuredHeight(); if (h > height) height = h; heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } public void measureCurrentView(View currentView) { mCurrentView = currentView; requestLayout(); } public int measureFragment(View view) { if (view == null) return 0; view.measure(0, 0); return view.getMeasuredHeight(); }} 

and add adapter, add these lines as well

 private int mCurrentPosition = -1; @Override public void setPrimaryItem(ViewGroup container, int position, Object object) { super.setPrimaryItem(container, position, object); if (position != mCurrentPosition) { Fragment fragment = (Fragment) object; CustomPager pager = (CustomPager) container; if (fragment != null && fragment.getView() != null) { mCurrentPosition = position; pager.measureCurrentView(fragment.getView()); } } } 
+2
source

All Articles