背景
我使用了修改后的版本底页 https://www.google.com/design/spec/components/bottom-sheets.html图书馆 (here https://github.com/AndroidDeveloperLB/ThreePhasesBottomSheet, 基于这个图书馆 https://github.com/Flipboard/bottomsheet,也写过这件事here https://stackoverflow.com/q/34160423/878126),以便在折叠(又名“窥视”)状态和展开状态之间实现良好的过渡。
图书馆有其问题,但总的来说,我已经解决了所有问题。
问题
最近我们发现,从所有广告网络屏幕返回到具有底部表单的屏幕后,底部表单会进入一种奇怪的展开状态。
我决定是时候尝试一下支持库的新底页(如图所示)here http://android-developers.blogspot.co.il/2016/02/android-support-library-232.html),但我发现它有很多基本的相关问题:
- 底部的纸张立即显示,但高度错误。
- 它必须立即配置其高度,不支持“wrap_content”,并且展开时也不能具有高度“match_parent”,因为它将位于其他视图(包括工具栏)之上。
- 当它被隐藏时,它仍然会对触摸事件做出反应并再次显示。
- 当我设置其初始状态时它会崩溃。
所有这一切甚至都没有尝试处理我想要的东西,这是我之前做过的三个阶段。
我尝试过的
起初,我以为我只是没有很好地使用这个库,所以我尝试了我找到的两个示例:
- https://github.com/vipulshah2010/BottomSheets https://github.com/vipulshah2010/BottomSheets
- https://github.com/chikkutechie/androidexamples https://github.com/chikkutechie/androidexamples
我还尝试了在 StackOverflow 上找到的一些代码,但似乎所有示例都大致相同。
我注意到他们都有相同的问题,所以我报告了这些问题:
- https://code.google.com/p/android/issues/detail?id=203114 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=203115
- https://code.google.com/p/android/issues/detail?id=203113 https://code.google.com/p/android/issues/detail?id=203113
- https://code.google.com/p/android/issues/detail?id=203654 https://code.google.com/p/android/issues/detail?id=203654
现在我尝试了各种方法来调查和解决问题,但仍然失败。
问题
有什么办法可以解决这些问题吗?使用支持库使用底部工作表的正确代码应该是什么?
UPDATE链接到完整答案 https://github.com/miguelhincapie/CustomBottomSheetBehavior在这里你可以找到关于如何获得像谷歌地图这样的完整行为的所有解释。
帮助你做你想做的事
我想要的,这是我之前做过的三个阶段
使用支持库 23.x+,您可以修改默认值BottomSheetBehavior
通过以下步骤添加一项统计数据:
- 创建一个 Java 类并对其进行扩展
CoordinatorLayout.Behavior<V>
- 从默认复制粘贴代码
BottomSheetBehavior
文件到您的新文件。
修改方法clampViewPositionVertical
:
-
添加新状态
公共静态最终 int STATE_ANCHOR_POINT = X;
修改以下方法:onLayoutChild
, onStopNestedScroll
, BottomSheetBehavior<V> from(V view)
and setState
(选修的)
所以现在你有这些状态:
状态_隐藏
STATE_COLLAPSED
状态_拖动
STATE_ANCHOR_POINT
STATE_EXPANDED。
您可以使用setBottomSheetCallback
就像你在原版中所做的那样BottomSheetBehavior
XML(没有像谷歌地图这样的视差图像)看起来像:
<CoordinatorLayout>
<FrameLayout/>
<AppBarLayout>
<CollapsingToolbarLayout>
<Toolbar/>
</CollapsingToolbarLayout >
</AppBarLayout >
<NestedScrollView>
<LinearLayout/>
</NestedScrollView>
</CoordinatorLayout >
我要添加一个链接到示例项目 https://github.com/miguelhincapie/CustomBottomSheetBehavior您可以在哪里找到您想要的东西
And here is how its looks like:
[
]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)