wangpeiyuan / CycleViewPager2

使用 ViewPager2 实现无限轮播效果,可以用来实现 banner 以及上下滚动文字广告等。Implementing android cycle viewPager with ViewPager2
91 stars 12 forks source link

平板旋转屏幕的时候卡在一半的位置 #2

Closed ghost closed 4 years ago

ghost commented 4 years ago

问题如题 另外,是否可以把最低API降低为16呢?

wangpeiyuan commented 4 years ago

没明白卡在一半是什么样的状态的?ViewPager2 对横屏的支持不是很好,之前发现一个问题在横屏的时候 item 并没有填充满,第二个 item 存在部分可见。如果你这边也是这种问题的话,可能需要等待官方修复。

ghost commented 4 years ago

Screenshot 如图,旋转的时候当前的item就不居中了。

wangpeiyuan commented 4 years ago

已找出问题所在。我前一条回复说是对横屏支持不好,这个结论是错误的(上一条已做相应修改),之前发现这个问题并没有想到是根布局的原因,早上过来的时候突然想到可能是根布局影响到。

产生这个问题在于根布局如果是 ConstraintLayout 并且将 CycleViewPager2android:layout_width 设置为 0dp 的话就会导致横屏时显示问题,改为 match_parent 就可解决。

你可以更新一下代码,再试一下。

ghost commented 4 years ago

嗯,可以了。但是发现在AndroidManifest.xml中给MainActivity指定了android:configChanges="orientation|screenSize|keyboardHidden|smallestScreenSize|screenLayout|navigation"也就是自己处理旋转(项目中常见的场景)之后,发现旋转之后当前item还是不会居中。

wangpeiyuan commented 4 years ago

应该是由于 MarginItemDecoration 引起的,ViewPager2 屏幕旋转之后间距处理似乎存在问题。你可以试试在布局中设置间距的方式替代 MarginItemDecoration 试试。

ghost commented 4 years ago

是snaphelper的问题。旋转时没有主动调用吸附。

WangPeiyuan notifications@github.com 於 2019年12月12日 週四 下午6:15 寫道:

应该是由于 MarginItemDecoration 引起的,ViewPager2 屏幕旋转之后间距处理似乎存在问题。你可以试试在布局中设置间距的方式替代 MarginItemDecoration 试试。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/wangpeiyuan/CycleViewPager2/issues/2?email_source=notifications&email_token=AM2DXVY23BT2MRP56JLLPSTQYHXIZA5CNFSM4JZKKXTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEGV2VKI#issuecomment-564898473, or unsubscribe https://github.com/notifications/unsubscribe-auth/AM2DXVYYO3Z35ZAGTWQYYSLQYHXIZANCNFSM4JZKKXTA .

zhuangzhitu commented 2 years ago

snaphelper 应该怎么处理?