为什么在更改ViewPager的padding和pagemargin之前,先滚动ViewPager?

我希望能够在两种不同的状态之间切换我的viewpager。 一个片段占据整个屏幕的状态,另一个状态显示片段两侧的预览。 以下是所需的效果: https : //im2.ezgif.com/tmp/ezgif-2-d5afc38aa7.gif

请注意,gif仅适用于viewpager中的第一项。 观看在尝试切换状态之前滚动到viewpager中的另一个项目时会发生什么情况: https : //im2.ezgif.com/tmp/ezgif-2-bf17757173.gif正如您所看到的,我在标有“2”的项目上并在第二个状态“缩小”到某个不正确的点。

以下是我的代码(在Kotlin中):

fun setupListeners() { btnTest.setOnClickListener { TransitionManager.beginDelayedTransition(binding.viewPager) if(stateTwo) { resetViewPagerStyling() } else { setViewPagerStateTwo() } stateTwo = !stateTwo } } fun setViewPagerInStateTwo() { // Setup view pager to show siblings viewPager.clipToPadding = false // Setup margins to show pages to the side viewPager.setPadding(100, 100, 100, 100) viewPager.pageMargin = 50 } fun resetViewPagerStyling() { // Setup view pager to show siblings viewPager.clipToPadding = true // Reset margin and padding to 0 viewPager.setPadding(0, 0, 0, 0) viewPager.pageMargin = 0 }