Android BottomSheetDialogFragment状态变化监听器

San*_*dak 6 android android-layout android-fragments material-design bottom-sheet

我正在使用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.
Run Code Online (Sandbox Code Playgroud)

我想根据当前状态更改一些视图 - 例如,当将BottomSheetDialogFragment展开全屏时,我想在右上角显示十字图标以关闭它等。

我怎样才能听到此类事件?

GGK*_*ine 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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

  • 据我所知,“BottomSheetDialogFragment”没有“bottomSheetBehavior”。如果我错了,请用一些代码示例告诉我。 (2认同)