bro还更新吗,画廊模式需要解耦一下
Author: Juliano114514Created Sep 2, 2025Updated Dec 11, 2025
对于函数 public Banner setBannerGalleryEffect(int leftItemWidth, int rightItemWidth, int pageMargin, float scale)
public Banner setBannerGalleryEffect(int leftItemWidth, int rightItemWidth, int pageMargin, float scale) {
if (pageMargin > 0) {
addPageTransformer(new MarginPageTransformer(BannerUtils.dp2px(pageMargin)));
}
if (scale < 1 && scale > 0) {
addPageTransformer(new ScaleInTransformer(scale));
}
setRecyclerViewPadding(leftItemWidth > 0 ? BannerUtils.dp2px(leftItemWidth + pageMargin) : 0,
rightItemWidth > 0 ? BannerUtils.dp2px(rightItemWidth + pageMargin) : 0);
return this;
}
private void setRecyclerViewPadding(int leftItemPadding, int rightItemPadding) {
RecyclerView recyclerView = (RecyclerView) getViewPager2().getChildAt(0);
if (getViewPager2().getOrientation() == ViewPager2.ORIENTATION_VERTICAL) {
recyclerView.setPadding(mViewPager2.getPaddingLeft(), leftItemPadding, mViewPager2.getPaddingRight(), rightItemPadding);
} else {
recyclerView.setPadding(leftItemPadding, mViewPager2.getPaddingTop(), rightItemPadding, mViewPager2.getPaddingBottom());
}
recyclerView.setClipToPadding(false);
}
这一块,pageMargin同时应用在了padding和MarginPageTransformer,导致设定间距的时候就特别奇怪,同时banneritem也会异常缩短,同时长度的判断也有误
bro如果还在更新的话,希望能够在这里解耦一下,多引入一个itemPadding参数进行控制,或者直接就注释掉设定padding的部分
我现在是靠addPageTransformer,单独设定margin给解决了,发一个issue也希望后面的人能看见吧
Source: youth5201314/banner