12

背景

我使用了底页库的修改版本(这里,基于这个库,也写过这里),以便在折叠(AKA“偷看”)状态和展开状态之间有一个很好的过渡。

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

问题

最近我们发现,在从所有广告网络屏幕返回后,返回到有底页的屏幕后,底页进入了一种奇怪的展开状态。

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

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

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

我试过的

起初,我以为我只是没有很好地使用该库,所以我尝试了找到的 2 个示例:

我还尝试了一些我在 StackOverflow 上找到的代码,但似乎所有样本都差不多。

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

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

问题

有没有办法处理这些问题?使用支持库使用底页的正确代码应该是什么?

4

2 回答 2

4

更新 链接到完整答案,您可以在其中找到有关如何获得完整行为(如谷歌地图)的所有解释。


帮助你做你想要的

我想要的,这是我之前做过的三个阶段

使用支持库 23.x+,您可以BottomSheetBehavior通过以下步骤修改默认添加一个统计信息:

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

  4. 添加新状态

    公共静态最终 int STATE_ANCHOR_POINT = X;

  5. 修改下一个方法:onLayoutChild、、onStopNestedScrollBottomSheetBehavior<V> from(V view)setState可选)

所以现在你有了这些状态:
STATE_HIDDEN
STATE_COLLAPSED
STATE_DRAGGING
STATE_ANCHOR_POINT
STATE_EXPANDED。

您可以setBottomSheetCallback像在原始BottomSheetBehavior

XML 中一样使用(没有任何关于视差图像的信息,如谷歌地图),如下所示:

<CoordinatorLayout>

    <FrameLayout/>

    <AppBarLayout>
        <CollapsingToolbarLayout>
            <Toolbar/>
        </CollapsingToolbarLayout >
    </AppBarLayout >

    <NestedScrollView>
        <LinearLayout/>
    </NestedScrollView>

</CoordinatorLayout >



我将添加一个指向示例项目的链接,您可以在其中找到您要查找的内容

这是它的样子:
[ CustomBottomSheetBehavior]

于 2016-05-25T17:12:14.513 回答
0

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

于 2016-03-13T14:46:31.353 回答