Android BottomSheetDialogFragment 状态变化监听器

Posted

技术标签:

【中文标题】Android BottomSheetDialogFragment 状态变化监听器【英文标题】:Android BottomSheetDialogFragment state change listener 【发布时间】: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 将全屏展开时,我想在右上角显示十字图标以关闭它等。

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

【问题讨论】:

【参考方案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

以上是关于Android BottomSheetDialogFragment 状态变化监听器的主要内容,如果未能解决你的问题,请参考以下文章

Android使用BottomSheetBehavior 和 BottomSheetDialog实现底部弹窗

Android使用BottomSheetBehavior 和 BottomSheetDialog实现底部弹窗

Android BottomSheetDialog设置背景透明无效?(解决)

Android BottomSheetDialog设置背景透明无效?(解决)

Android:BottomSheetDialog中的多行文本EditText

Android MVVM框架搭建高德地图定位天气查询BottomSheetDialog