BottomSheet自定义行为 - 在BottomBar之上

时间:2016-10-30 19:53:03

标签: android android-layout material-design android-coordinatorlayout bottom-sheet

我想在BottomSheet上方显示BottomBar。所以我必须编写自定义BottomSheet behavior,将我的BottomSheet置于我的BottomBar之上 - BottomBarshy behavior(在滚动期间隐藏) 。

我试图实施:

public class BottomSheetBehavior<T extends View> extends android.support.design.widget.BottomSheetBehavior<T> {

public BottomSheetBehavior(Context context, AttributeSet attrs) {
    super(context, attrs);
}

@Override
public boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {
    return dependency instanceof BottomBar;
}

@Override
public boolean onDependentViewChanged(CoordinatorLayout parent, View child, View dependency) {
    // This will set the Y of my bottom sheet above the bottom bar every time BottomBar changes its position
    child.setY(dependency.getY() - child.getHeight());
    // But I also have to modify the bottom position of my BottomSheet 
    // so the BottomSheet knows when its collapsed in its final bottom position.
    child.setBottom((int) dependency.getY() - dependency.getHeight());
    return false;
}

}

到目前为止,此解决方案尚未完全正常运行。我可以使用BottomSheet方法将BottomBar置于setY()之上。但扩张和崩溃是错误的。所以我尝试使用方法BottomSheet修改setBottom()的底部但是它不能正常工作。也许是因为错误的单位(px vs dp)。

任何人都可以帮我修改我的代码,或者至少给我一些提示我究竟做错了什么或者我错过了什么?

1 个答案:

答案 0 :(得分:1)

所以我推出了自己的解决方案。虽然有一些问题需要解决,但是工作得很好,例如CTRL + H上面的阴影或者当BottomBar被过期时隐藏BottomBar等。

对于那些面临相同或类似问题的人,有我的解决方案。

BottomSheet