在viewpagw2的点击item事件中重新计算fragment的高度,
if (fragmentList[index].view!=null){
ViewPagerHelper2.updatePagerHeightForChild(fragmentList[index].view!!,viewpager2)//解决viewpage2留白问题
}
//解决viewpager2高度问题
fun updatePagerHeightForChild(view: View, pager: ViewPager2) {
view.post {
val wMeasureSpec =
View.MeasureSpec.makeMeasureSpec(view.width, View.MeasureSpec.EXACTLY)
val hMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
view.measure(wMeasureSpec, hMeasureSpec)
if (pager.layoutParams.height != view.measuredHeight) {
pager.layoutParams = (pager.layoutParams)
.also { lp ->
lp.height = view.measuredHeight
}
}
}
}
private static void updatePagerHeightForChild(View view,ViewPager2 pager){
view.post(new Runnable() {
@Override
public void run() {
int measureSpec = View.MeasureSpec.makeMeasureSpec(view.getWidth(), View.MeasureSpec.EXACTLY);
int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
view.measure(measureSpec,makeMeasureSpec);
if (pager.getLayoutParams().height!=view.getMeasuredHeight()){
ViewPager.LayoutParams layoutParams=new ViewPager.LayoutParams();
layoutParams.height=view.getMeasuredHeight();
layoutParams.width= ViewPager.LayoutParams.MATCH_PARENT;
pager.setLayoutParams(layoutParams);
}
}
});
}