如何处理支持/devise库新底部的问题?

背景

我已经使用了一个底层库的修改版本( 这里 ,基于这个库 ,也在这里写了关于它),以便在折叠(AKA“窥视”)状态和扩展状态之间有一个很好的转换。

图书馆有它的问题,但总的来说,我已经解决了所有问题。

问题

最近我们发现,从所有的广告networking屏幕返回后,回到一个底部表单,底部表单进入一个奇怪的状态正在扩大。

我已经决定,现在是时候尝试支持库的新底部表格(如图所示),但是我发现它有很多基本的相关问题:

  1. 底部表单立即显示,并在错误的高度。
  2. 它必须立即configuration其高度,不支持“wrap_content”,并且在展开时不能具有“match_parent”高度,因为它将位于其他视图(包括工具栏)之上。
  3. 当它隐藏时,它仍然会触摸事件,并再次显示。
  4. 它会在我设置其初始状态时崩溃。

而所有这一切,甚至没有试图处理我想要的,这是我以前做的三个阶段。

我试过了

起初我以为我只是不使用图书馆,所以我已经尝试了2个我发现的样品:

  • https://github.com/vipulshah2010/BottomSheets
  • https://github.com/chikkutechie/androidexamples

我也尝试了一些我在StackOverflow上find的代码,但是似乎所有的样例都差不多。

我注意到他们都有同样的问题,所以我报告了他们:

  • https://code.google.com/p/android/issues/detail?id=203114
  • https://code.google.com/p/android/issues/detail?id=203115
  • https://code.google.com/p/android/issues/detail?id=203113
  • https://code.google.com/p/android/issues/detail?id=203654

现在我尝试各种方法来调查和解决问题,但我仍然没有这样做。

这个问题

有什么办法来解决这些问题? 什么应该是正确的代码使用支持库底部表单?

Solutions Collecting From Web of "如何处理支持/devise库新底部的问题?"

更新链接到完整的答案,在那里你可以find所有关于如何获得完整的行为,如谷歌地图的解释。


用你想要的帮助你

我想要什么,这是我之前完成的三个阶段

使用支持库23.x +,你可以修改默认的BottomSheetBehavior添加一个更多的统计数据,步骤如下:

  1. 创build一个Java类并从CoordinatorLayout.Behavior<V>扩展它
  2. 将粘贴代码从默认的BottomSheetBehavior文件复制到新的。
  3. 修改方法clampViewPositionVertical

  4. 添加一个新的状态

    public static final int STATE_ANCHOR_POINT = X;

  5. 修改下面的方法: onLayoutChildonStopNestedScrollBottomSheetBehavior<V> from(V view)setState (可选)

所以现在你有这些国家:
STATE_HIDDEN
STATE_COLLAPSED
STATE_DRAGGING
STATE_ANCHOR_POINT
STATE_EXPANDED。

你可以像使用原来的BottomSheetBehavior一样使用setBottomSheetCallback

XML(没有任何关于像谷歌地图的视差图像)看起来像:

 <CoordinatorLayout> <FrameLayout/> <AppBarLayout> <CollapsingToolbarLayout> <Toolbar/> </CollapsingToolbarLayout > </AppBarLayout > <NestedScrollView> <LinearLayout/> </NestedScrollView> </CoordinatorLayout > 

我将添加一个链接到示例项目 ,你可以find你要找的东西

下面是它的样子:
[ CustomBottomSheetBehavior ]

你可以使用这个库 。 据我所见,这个图书馆没有问题。