Odpowiedz

2

Korzystanie CustomViewPager możemy ustawić wysokość fragmentu

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(); 
}} 

i dodać adapter dodać te linie zbyt

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()); 
      } 
     } 
    } 
+0

można dostarczyć kompletny kod –