Android BottomSheetDialogFragment不占整个宽度

时间:2016-05-31 15:11:17

标签: android android-layout android-fragments

如何制作不覆盖整个屏幕宽度的BottomSheetDialogFragment(例如"通过&#34分享?平板电脑上的Chrome表格?)

3 个答案:

答案 0 :(得分:2)

正如开发人员在@UfoXp链接的问题中建议的那样,问题是BottomSheetDialog.onCreate()将窗口设置为MATCH_PARENT两种方式:

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final Dialog dialog = super.onCreateDialog(savedInstanceState);

    if ((isTablet(getContext()) || isLandscape(getContext()))) {
        dialog.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialogINterface) {
                dialog.getWindow().setLayout(
                        ViewGroup.LayoutParams.WRAP_CONTENT,
                        ViewGroup.LayoutParams.MATCH_PARENT);
            }
        });
    }
    return dialog;
}

private boolean isTablet(Context context) {
    return (context.getResources().getConfiguration().screenLayout
            & Configuration.SCREENLAYOUT_SIZE_MASK)
            >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}

private boolean isLandscape(Context context) {
    return context.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE;
}

答案 1 :(得分:1)

在显示对话框

后使用getWindow().setLayout()
dialog.getWindow().setLayout(ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.MATCH_PARENT);

答案 2 :(得分:0)