自定义 BottomSheet 行为 |更多州 |安卓X

Custom BottomSheet Behavior | More States | AndroidX

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

目前AndroidX底层sheet只有以下几种状态:STATE_HIDDEN、STATE_HALF_EXPANDED、STATE_EXPANDED、STATE_COLLAPSED、STATE_DRAGGING, STATE_SETTLING.

有什么方法可以将 states/heights 添加到“BottomSheetBehavior”class?

我考虑过的解决方案:

有 2 种方法可以达到您想要的效果。

第一个与您相同的解决方案。有很多添加新状态的例子——比如 this。如您所见,他们只是复制 class BottomSheetBehavior 并进行一些修改。

为什么要那样做? 因为您需要修改的最重要的字段是 internalprivate 。在 private 字段的情况下,无法通过继承进行修改。您可以检查 this 锚点行为并观察与 material 回购中原始的区别。如果您需要修改的所有字段都是 internal 您可以创建 bottom sheet 行为的子项并将其放置在与 bottom sheet 行为相同的包中 - 检查示例这里(这是我的行为,我更喜欢这个解决方案,因为我需要的所有字段都是内部。检查这个class的包- 它与 BottomSheetBehavior 具有相同的包名)。在这种情况下,您可以修改字段。这两种解决方案都很丑陋。对于 BottomSheetBehavior

这个奇怪的 api,我们无能为力