Android BottomSheetDialogFragment状态变化监听器

5
我正在使用BottomSheetDialogFragment,我需要知道状态何时发生变化。
例如,BottomSheetBehavior有不同的状态。
PEEK_HEIGHT_AUTO - Peek at the 16:9 ratio keyline of its parent.    
STATE_COLLAPSED - The bottom sheet is collapsed.
STATE_DRAGGING - The bottom sheet is dragging.
STATE_EXPANDED - The bottom sheet is expanded.
STATE_HIDDEN - The bottom sheet is hidden.
STATE_SETTLING - The bottom sheet is settling.

我希望根据当前状态更改一些视图 - 例如,当BottomSheetDialogFragment被展开到全屏时,我想在右上角显示关闭按钮等。

我该如何监听此类事件?

1个回答

0

可能有点晚,但这应该是您问题的答案。您必须使用bottomSheetBehavior回调函数。

bottomSheetBehavior.setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
        @Override
        public void onStateChanged(View bottomSheet, int newState) {
  switch (newState) {
                case BottomSheetBehavior.STATE_COLLAPSED:
                    Log.d("Bottom Sheet Behavior", "STATE_COLLAPSED");
                    break;
                case BottomSheetBehavior.STATE_DRAGGING:
                    Log.d("Bottom Sheet Behavior", "STATE_DRAGGING");
                    break;
                case BottomSheetBehavior.STATE_EXPANDED:
                    Log.d("Bottom Sheet Behavior", "STATE_EXPANDED");

                    break;
                case BottomSheetBehavior.STATE_HIDDEN:
                    Log.d("Bottom Sheet Behavior", "STATE_HIDDEN");
                    bottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED);
                    break;
                case BottomSheetBehavior.STATE_SETTLING:
                    Log.d("Bottom Sheet Behavior", "STATE_SETTLING");
                    break;
            }
        }

2
据我所知,BottomSheetDialogFragment没有bottomSheetBehavior。如果我错了,请提供一些代码示例让我知道。 - Stepan Sanda
不错的答案,如果你知道如何破解它。 - Ashish
setBottomSheetCallback 已经被弃用,请使用 addBottomSheetCallback - Luis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接