最近在项目中遇到这样的需求,ViewPager 需要嵌套3个Fragment界面,但是每个Fragment界面的高度都是不一样的,因此不能将ViewPager的高度写成固定值。前期,我也查看了一些网上关于这类问题的相关文章,受到启发,决定按照自己的思路在项目中来实现此类的需求,最终实现的效果也非常的理想。下面详细的说明一下我们要达到的效果,就是让Viewpager嵌套的每个页面不同的切换时,根据当前Fragment的实际高度来自适应显示界面。简单画了一下草图,如下:
首先我们需要自定义一个ViewPager,重写onMeasure()方法进行重新测量。代码如下:
public class CustomViewpager extends ViewPager {
public CustomViewpager(Context context) {
super(context);
}
public CustomViewpager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int viewHeight = 0;
View childView = getChildAt(getCurrentItem());
if (childView != null) {
chil