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设置背景透明无效?(解决)