BottomSheetDialogFragment 不是模态的

Posted

技术标签:

【中文标题】BottomSheetDialogFragment 不是模态的【英文标题】:BottomSheetDialogFragment not modal 【发布时间】:2017-03-25 17:54:31 【问题描述】:

是否可以使 ?这意味着不会使底层内容变暗,也不会阻止与它的交互。

也许只能通过经典片段?

【问题讨论】:

【参考方案1】:

尝试通过这种方式扩展BottomSheetDialogFragment

public class CustomBottomSheetDialogFragment extends BottomSheetDialogFragment 


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
    

    private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() 

        @Override
        public void onStateChanged(@NonNull View bottomSheet, int newState) 
            if (newState == BottomSheetBehavior.STATE_HIDDEN) 
                dismiss();
            
        

        @Override
        public void onSlide(@NonNull View bottomSheet, float slideOffset) 
        
    ;

    @Override
    public void setupDialog(Dialog dialog, int style) 
        super.setupDialog(dialog, style);
        View contentView = View.inflate(getContext(), R.layout.dialog_modal, null);
        dialog.setContentView(contentView);
        CoordinatorLayout.LayoutParams layoutParams =
                (CoordinatorLayout.LayoutParams) ((View) contentView.getParent()).getLayoutParams();
        CoordinatorLayout.Behavior behavior = layoutParams.getBehavior();
        if (behavior != null && behavior instanceof BottomSheetBehavior) 
            ((BottomSheetBehavior) behavior).setBottomSheetCallback(mBottomSheetBehaviorCallback);
        
    

来自this 文章。

【讨论】:

嗨,谢谢,但这似乎不能满足我的需要 但这很有帮助,因为它展示了如何以编程方式获取行为 @luky 你为什么不编辑答案或发布一个完全解决你问题的新答案?

以上是关于BottomSheetDialogFragment 不是模态的的主要内容,如果未能解决你的问题,请参考以下文章

如果键盘可见,则防止关闭 BottomSheetDialogFragment

赶上BottomSheetDialogFragment的解雇

Android BottomSheetDialogFragment 闪烁

防止 BottomSheetDialogFragment 覆盖导航栏

BottomSheetDialogFragment - 如何包装内容并完全显示?

BottomSheetDialogFragment 不是模态的