android 如何让BottomSheetDialogFragment覆盖整个屏幕?

k0pti3hp  于 2023-04-18  发布在  Android
关注(0)|答案(3)|浏览(238)

我使用BottomSheetDialogFragment来显示一些数据。但是当我启动fragment时,它会显示50%的屏幕。所以,我的问题是如何使它全屏显示。
BottomSheetDialogFragment编码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.bot_frag, container, false);
    TextView tv = v.findViewById(R.id.textVi);
    back=v.findViewById(R.id.back_of_bot);
    back.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dismiss();
                }
            }
    );
    return v;
}
lb3vh1jj

lb3vh1jj1#

你可以使用对话框片段,请参考:

public class DialogFragments extends DialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
        View view = inflater.inflate(R.layout.dialog_dialogfragment_layout, null);
        getDialog().setTitle("Title");
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DisplayMetrics metrics = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(metrics);
        getDialog().getWindow().setGravity(Gravity.BOTTOM);
        getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, (int) (metrics.heightPixels * 0.30));// here i have fragment height 30% of window's height you can set it as per your requirement
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimationUpDown;

}

当你想打开时,打开底页对话框,如下所示:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.bot_frag, container, false);
    TextView tv = v.findViewById(R.id.textVi);
    back=v.findViewById(R.id.back_of_bot);
    back.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   FragmentManager fm = getFragmentManager();
                   DialogFragments dialogFragment = new DialogFragments(this);
                   dialogFragment.show(fm, "Bottomsheet Fragment");
                }
            }
    );
    return v;
}
ddrv8njm

ddrv8njm2#

你必须把这种风格应用到你身上BottomSheetDialogFragment

android.R.style.Theme_Material_Light_NoActionBar_Fullscreen
tyky79it

tyky79it3#

这个解决方案适用于BottomSheetDialogFragment。我还没有在其他类型的底部工作表视图上测试过。你需要做两件事:
1.将底部工作表根视图的最小高度设置为显示的

container?.minimumHeight = Resources.getSystem().displayMetrics.heightPixels

1.覆盖BottomSheetDialogFragment中的主题以返回此样式

override fun getTheme(): Int {
    return R.style.Theme_Design_BottomSheetDialog
}

第一个操作将设置底部工作表的高度为您的显示器的。第二个操作将底部工作表的主题设置为填充宽度的主题-这在平板电脑上更是一个问题。现在您有一个全屏底部工作表。

相关问题