#1266·banner

bro还更新吗,画廊模式需要解耦一下

Author: Juliano114514Created Sep 2, 2025Updated Dec 11, 2025

对于函数 public Banner setBannerGalleryEffect(int leftItemWidth, int rightItemWidth, int pageMargin, float scale)

kotlin
    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同时应用在了paddingMarginPageTransformer,导致设定间距的时候就特别奇怪,同时banneritem也会异常缩短,同时长度的判断也有误

bro如果还在更新的话,希望能够在这里解耦一下,多引入一个itemPadding参数进行控制,或者直接就注释掉设定padding的部分

我现在是靠addPageTransformer,单独设定margin给解决了,发一个issue也希望后面的人能看见吧