我正在实现一个应用程序,其中我使用具有@string/bottom_sheet_behavior
定义的行为的底部工作表。另外,我以编程方式设置BottomSheetBehavior.BottomSheetCallback()
,因为我想使用onSlide()方法为填充设置动画。因此我真的需要slideOffset值来计算要设置的新填充。
我读了docs。他们说,当状态介于隐藏和折叠状态之间时,值的范围是-1到0。当我的手机或平板电脑处于纵向模式且独立于Android版本时,我才能看到此行为。但是在横向模式下,范围从1到-1。
这里详细介绍了从隐藏到扩展的底页的值历史记录:
D/SLIDE: -0.86160713
D/SLIDE: -0.5714286
D/SLIDE: -0.29910713
D/SLIDE: -0.0625
D/SLIDE: 0.11382114
D/SLIDE: 0.27235773
D/SLIDE: 0.40650406
D/SLIDE: 0.51626015
D/SLIDE: 0.6300813
D/SLIDE: 0.69512194
D/SLIDE: 0.75609756
D/SLIDE: 0.8130081
D/SLIDE: 0.8577236
D/SLIDE: 0.8943089
D/SLIDE: 0.9186992
D/SLIDE: 0.9430894
D/SLIDE: 0.9593496
D/SLIDE: 0.97154474
D/SLIDE: 0.9796748
D/SLIDE: 0.9878049
D/SLIDE: 0.9918699
D/SLIDE: 0.99593496
D/SLIDE: 1.0
我只在按钮点击时设置底部工作表的新状态。 所需的值将从-1开始并以0.0结尾,其间的粒度更精细。在这段历史中,价值也会增加,但它们会增加到+1 是否有其他人不得不面对同样的奇怪行为,并能给我一个暗示我缺少的东西? 如果需要任何其他代码,我会更新我的问题。
提前致谢。
彼得
答案 0 :(得分:2)
我遇到了与您相同的问题,我不能说问题已得到解决,因为onSlide
的{{1}}方法不符合documentation(-1的值)到1),但至少我能够通过将峰高设置为0来标准化它,如下所示:
BottomSheetBehavior.BottomSheetCallback()
添加此行后,我看到bottomSheetBehavior.setPeekHeight(0);
方法始终具有正值(0 - 1)。
我仍在努力了解正在发生的事情,以便找到更好的解决方案。
答案 1 :(得分:1)
BottomSheetBehavior有3"固定"规定:
根据文件:
此底页的新偏移量在[-1,1]范围内。抵消 随着这个底部纸张向上移动而增加。从0到1表 在折叠状态和展开状态之间,从-1到0 在隐藏和崩溃的状态之间。
您可以使用setHideable
方法排除/包含STATE_HIDDEN。