我有一个包含多个元素的ScrollView,其中有一个ViewPager。我希望我的ViewPager高度与其当前页面高度(并且可滚动)相同,以避免其底部的空白区域。 我的ViewPager类是以下
public class ScrollableViewPager extends ViewPager {
private int currentPageNumber;
private int pageCount;
public ScrollableViewPager(Context context) {
super(context);
prepareUI();
}
public ScrollableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
prepareUI();
}
private void prepareUI() {
setOffscreenPageLimit(pageCount);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int height = 0;
if (getChildCount() != 0) {
View child = getChildAt(currentPageNumber);
child.measure(widthMeasureSpec, heightMeasureSpec);
height = child.getMeasuredHeight();
}
heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
我认为它可以完成这项工作,但是使用该代码我的ViewPager始终是其第一页的高度,而不管我设置为屏幕外页面限制。
我无法弄清楚我做错了什么。