如何处理支持/设计库新底页的问题?

时间:2016-03-13 14:37:44

标签: android android-support-library android-design-library bottom-sheet

背景

我使用了基于bottom-sheethere库(this library的修改版本,也写了here),以便有一个很好的过渡在崩溃(AKA“偷看”)状态和扩张状态之间。

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

问题

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

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

  1. 立即显示底部纸张,并且位于错误的高度。
  2. 它必须立即配置其高度,不支持“wrap_content”,并且在展开时也不能具有高度“match_parent”,因为它将位于其他视图的顶部,包括工具栏。
  3. 当它被隐藏时,它仍会对触摸事件作出反应,并再次显示。
  4. 当我设置初始状态时会崩溃。
  5. 所有这一切都没有试图处理我想要的东西,这是我以前做过的三个阶段。

    我尝试了什么

    起初我以为我没有好好利用这个库,所以我尝试了两个我发现的样本:

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

    我注意到他们都有同样的问题,所以我已经报道了这些问题:

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

    问题

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

2 个答案:

答案 0 :(得分:4)

<强>更新 链接到full answer,您可以在其中找到有关如何获取Google地图等完整行为的所有说明。

用你想要的东西帮助你

  

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

使用支持库23.x +您可以修改默认BottomSheetBehavior,并按以下步骤再添加一个属性:

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

  5. 添加新状态

    public static final int STATE_ANCHOR_POINT = X;

  6. 修改下列方法:onLayoutChildonStopNestedScrollBottomSheetBehavior<V> from(V view)setState(可选)

  7. 所以现在你有了这些状态:
    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 >
    



    我要添加link to the example project,您可以在其中找到您要找的内容

    以下是它的外观:
    [CustomBottomSheetBehavior]

答案 1 :(得分:0)

您可以使用此library。据我所知,这个库没有问题。