BottomViewPage
项目遇到一个需求,需要不同高度ITEM的ViewPage,
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
import org.jetbrains.annotations.NotNull;
/**
* <p> 功能描述:动态修改ViewPager大小
* <p>
* 详细描述:
*
* @Author: 龚寿生
* @CreateDate: 2021/8/19 19:39
* @UpdateUser: 最后一次更新者
* @UpdateDate: 2021/8/19 19:39
* @UpdateRemark: 最后一次更新说明
* @Version: 1.0 版本
*/
public class BottomViewPage extends ViewPager {
public BottomViewPage(@NonNull @NotNull Context context) {
super(context);
}
public BottomViewPage(@NonNull @NotNull Context context, @Nullable @org.jetbrains.annotations.Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* 在切换tab的时候,重置ViewPager的高度
*/
public void resetViewHeightToShowViewHeight(int height) {
ViewGroup.LayoutParams params = this.getLayoutParams();
if (params.height == height) {
return;
}
// Log.i("gss", params.height + "==" + height);
params.height = height;
setLayoutParams(params);
requestLayout();
}
}
在滑动的时候动态修改每个ITEM的高度
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// Log.i("gss", "onPageSelected=" + position);
switch (position) {
case 0:
mViewPager.resetViewHeightToShowViewHeight(193);
break;
case 1:
mViewPager.resetViewHeightToShowViewHeight(362);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
// Log.i("gss", "state=" + state);
if (state == SCROLL_STATE_DRAGGING) {
mViewPager.resetViewHeightToShowViewHeight(362);
} else if (state == SCROLL_STATE_SETTLING) {
if (mViewPager.getCurrentItem() == 0) {
mViewPager.resetViewHeightToShowViewHeight(193);
}
}
}
});