【问题标题】:Android BottomSheetDialogFragment state change listenerAndroid BottomSheetDialogFragment 状态变化监听器
【发布时间】:2019-08-10 10:36:30
【问题描述】:

我正在使用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 将全屏展开时,我想在右上角显示十字图标以关闭它等。

我怎样才能听到这种事件?

【问题讨论】:

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


    【解决方案1】:

    晚了,但可能是您问题的答案。您必须使用 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;
                }
            }
    

    【讨论】:

    • 据我所知,BottomSheetDialogFragment 没有 bottomSheetBehavior。如果我错了,请用一些代码示例告诉我。
    • 不错的答案,如果有人知道如何破解这个。
    • setBottomSheetCallback 现在已弃用。请改用addBottomSheetCallback。
    猜你喜欢
    • 2021-02-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 2011-01-31
    相关资源
    最近更新 更多