BottomSheetDialogFragment 背景色、导航栏透明问题原因及解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BottomSheetDialogFragment 背景色、导航栏透明问题原因及解决方案相关的知识,希望对你有一定的参考价值。

参考技术A 背景色具体的设置时间点很晚,测试发现需要在显示出来之后才可以进行覆盖

WindowInset 可以从父布局进行拦截,因为响应这个变化的 ViewGroup 是 DecorView 的子View,所以这里我们可以对 DecorView 设置监听,在内部对我们 XML 的布局进行适配,然后消耗掉 Inset。

BottomSheetDialogFragment 不是模态的

【中文标题】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 不是模态的