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 覆盖导航栏