简体   繁体   中英

Disable ViewPager2 item animator

I'm using ViewPager2 with ListAdapter. Every time dataset get changes, item of viewpager2 displays an animation. Is there any way to disable it? In recyclerview we can disable by setting recyclerview.itemAnimator = null but what about viewpager2?

Found a workaround to this problem: setting an empty PageTransformer

managementView.pager.setPageTransformer { p0, p1 -> }

By looking at the ViewPager2 implementation this unfortunately seems to be the only way to set the internal RecyclerView's animator to null.

public void setPageTransformer(@Nullable ViewPager2.PageTransformer transformer) {
        if (transformer != null) {
            if (!this.mSavedItemAnimatorPresent) {
                this.mSavedItemAnimator = this.mRecyclerView.getItemAnimator();
                this.mSavedItemAnimatorPresent = true;
            }

            this.mRecyclerView.setItemAnimator((ItemAnimator)null);
        } else if (this.mSavedItemAnimatorPresent) {
            this.mRecyclerView.setItemAnimator(this.mSavedItemAnimator);
            this.mSavedItemAnimator = null;
            this.mSavedItemAnimatorPresent = false;
        }

        if (transformer != this.mPageTransformerAdapter.getPageTransformer()) {
            this.mPageTransformerAdapter.setPageTransformer(transformer);
            this.requestTransform();
        }
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM