【问题标题】:Custom BottomSheet Behavior | More States | AndroidX自定义 BottomSheet 行为 |更多州 |安卓X
【发布时间】:2021-02-24 02:51:22
【问题描述】:

我希望能够为我当前的 BottomSheet 添加更多具有多个自定义高度的状态。

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

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

我考虑过的解决方案:

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

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

【问题讨论】:

    标签: android androidx bottom-sheet android-bottomsheetdialog bottomsheetdialogfragment


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 好的,谢谢你的回答。我手动更改了我的 BottomSheetBehavior。它在大多数情况下都可以正常工作......虽然锚定和运动有点奇怪(我不知道这是否正常,但我保持原样)。
    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 2012-01-22
    • 2019-02-28
    • 2013-06-18
    • 2016-12-10
    • 2012-07-31
    相关资源
    最近更新 更多