Android BottomSheetBehavior 回调方法 onSlide() 给出了令人困惑的 slideOffset 值

标签 android material-design bottom-sheet

我正在实现一个应用程序,我在其中使用具有 @string/bottom_sheet_behavior 定义的行为的 Bottom Sheet 。此外,我以编程方式设置了 BottomSheetBehavior.BottomSheetCallback(),因为我想使用 onSlide() 方法来为填充设置动画。因此我真的需要 slideOffset 值来计算要设置的新填充。 我读了docs .他们在那里说,当状态介于隐藏和折叠状态之间时,该值的范围从 -1 到 0。当我的手机或平板电脑处于纵向模式并且独立于 android 版本时,我只能看到这种行为。然而在横向模式下,范围从 1 到 -1。 下面详细介绍了 Bottom Sheet 从隐藏到扩展的值(value)历史:

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

我只在单击按钮时设置 Bottom Sheet 的新状态。 所需的值将从 -1 开始,到 0.0 结束,中间有更精细的步骤。在此历史记录中,值也会增加,但会上升到 +1。
有没有其他人不得不面对同样的奇怪行为,并且可以给我提示我错过了什么?
如果需要任何其他代码,我会更新我的问题。

提前致谢。
彼得

最佳答案

我和你有同样的问题,我不能说问题已经解决了,因为 BottomSheetBehavior.BottomSheetCallback()onSlide 方法没有按照documentation (值从 -1 到 1),但至少我能够通过将峰高设置为 0 来对其进行标准化,如下所示:

bottomSheetBehavior.setPeekHeight(0);

添加此行后,我看到 onSlide 方法始终具有正值 (0 - 1)。

我仍在努力了解正在发生的事情,以便找到更好的解决方案。

关于Android BottomSheetBehavior 回调方法 onSlide() 给出了令人困惑的 slideOffset 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40222018/

相关文章:

android - 三星 Galaxy Note sgh i717 的应用在 Google Play 商店中不可见

java - 从应用程序获取 Android 通知?

android - EditText setError 在 BottomSheetDialog 中不合适

html - 有没有办法放入样式表以获得页面上所有表单元素的 Material 主题或类似主题?

java - 内置网格底板?

react-native - React Native 中 map 内容的 Bottom Sheet ,类似于谷歌地图 UI

java - 将游戏移植到 Android 时出现 NullPointerException

php - Android 选择要上传的文件 - DOC、PDF 等问题

android - 我如何更改 BadgeDrawable Android 中的背景颜色

android - 退出应用程序后按钮背景更改为默认