1

我希望能够使用多个自定义高度向我当前的 BottomSheet 添加更多状态。

目前,AndroidX 底页只有以下状态:STATE_HIDDEN、STATE_HALF_EXPANDED、STATE_EXPANDED、STATE_COLLAPSED、STATE_DRAGGING、STATE_SETTLING。

有没有办法向“BottomSheetBehavior”类添加状态/高度?

我考虑过的解决方案:

  • 对于 BottomSheet 的支持版本,有很多关于此的材料(其中大部分来自复制/粘贴代码和修改行为),但对于com.google.android.material.bottomsheet几乎没有

  • 我考虑过扩展 BottomSheetBehavior 类并手动更改其行为,但这需要大量工作/分析才能完成

4

1 回答 1

1

有两种方法可以实现您想要的。

第一个像你一样的解决方案。有很多添加新状态的例子——像这样。如您所见,他们只是复制了 BottomSheetBehavior 类并进行了一些修改。

为什么会这样?因为您需要修改的最重要的字段是internalprivate如果是私有字段,则无法通过继承进行修改。您可以检查锚点行为并观察与材料回购中原始的差异。如果您需要修改的所有字段都是内部字段,您可以创建底部表行为的子项并将其放置在与底部表行为相同的包中 -在此处查看示例(此行为是我的,我更喜欢此解决方案,因为我需要的所有字段是内部的. 检查此类的包 - 它与 BottomSheetBehavior 具有相同的包名)。在这种情况下,您可以修改字段。这两种解决方案都很丑陋。我们无法对BottomSheetBehavior这个奇怪的 api 做任何事情

于 2021-07-02T14:22:53.173 回答