自定义 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?
我考虑过的解决方案:
关于 support 版本的 BottomSheet 有很多 material(其中大部分来自 copy/pasting 代码和修改行为)但是几乎 none 对于 com.google.android.material.bottomsheet
我考虑过扩展 BottomSheetBehavior class 并手动更改它的行为,但这需要很多 work/analysis 才能完成
有 2 种方法可以达到您想要的效果。
第一个与您相同的解决方案。有很多添加新状态的例子——比如 this。如您所见,他们只是复制 class BottomSheetBehavior 并进行一些修改。
为什么要那样做? 因为您需要修改的最重要的字段是 internal 或 private 。在 private 字段的情况下,无法通过继承进行修改。您可以检查 this 锚点行为并观察与 material 回购中原始的区别。如果您需要修改的所有字段都是 internal 您可以创建 bottom sheet 行为的子项并将其放置在与 bottom sheet 行为相同的包中 - 检查示例这里(这是我的行为,我更喜欢这个解决方案,因为我需要的所有字段都是内部。检查这个class的包- 它与 BottomSheetBehavior 具有相同的包名)。在这种情况下,您可以修改字段。这两种解决方案都很丑陋。对于 BottomSheetBehavior
这个奇怪的 api,我们无能为力
我希望能够使用多个 自定义 高度向我当前的 BottomSheet 添加更多状态。
目前AndroidX底层sheet只有以下几种状态:STATE_HIDDEN、STATE_HALF_EXPANDED、STATE_EXPANDED、STATE_COLLAPSED、STATE_DRAGGING, STATE_SETTLING.
有什么方法可以将 states/heights 添加到“BottomSheetBehavior”class?
我考虑过的解决方案:
关于 support 版本的 BottomSheet 有很多 material(其中大部分来自 copy/pasting 代码和修改行为)但是几乎 none 对于 com.google.android.material.bottomsheet
我考虑过扩展 BottomSheetBehavior class 并手动更改它的行为,但这需要很多 work/analysis 才能完成
有 2 种方法可以达到您想要的效果。
第一个与您相同的解决方案。有很多添加新状态的例子——比如 this。如您所见,他们只是复制 class BottomSheetBehavior 并进行一些修改。
为什么要那样做? 因为您需要修改的最重要的字段是 internal 或 private 。在 private 字段的情况下,无法通过继承进行修改。您可以检查 this 锚点行为并观察与 material 回购中原始的区别。如果您需要修改的所有字段都是 internal 您可以创建 bottom sheet 行为的子项并将其放置在与 bottom sheet 行为相同的包中 - 检查示例这里(这是我的行为,我更喜欢这个解决方案,因为我需要的所有字段都是内部。检查这个class的包- 它与 BottomSheetBehavior 具有相同的包名)。在这种情况下,您可以修改字段。这两种解决方案都很丑陋。对于 BottomSheetBehavior
这个奇怪的 api,我们无能为力