Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to control a bottom sheet width?

I need to a bottom sheet didn't take all width on the tablet. But it ignore layout_width attribute in xml. How can I make it? My bottom sheet class:

public class DetailsFragment extends BottomSheetDialogFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        //Create fragment root view
        View view = inflater.inflate(R.layout.fragment_details, container, false);
        //Set toolbar
        Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
        Drawable icClose = VectorDrawable.getDrawable(getContext(), R.drawable.ic_close_white_24dp);
        toolbar.setNavigationIcon(icClose);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
        toolbar.inflateMenu(R.menu.details);
        RecyclerView rvContent = (RecyclerView) view.findViewById(R.id.rvContent);
        FullExpandedListManager lm = new FullExpandedListManager(getContext());
        rvContent.setLayoutManager(lm);
        rvContent.setHasFixedSize(true);
        rvContent.setAdapter(mAdapter);

        return view;
    }
}
like image 427
Шах Avatar asked Jul 10 '16 10:07

Шах


1 Answers

I am not sure if it's the best solution but it works for me at least.

public class DetailsFragment extends BottomSheetDialogFragment {
    @NonNull
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new BottomSheetDialog(getContext(), getTheme());
    }

    public static class BottomSheetDialog extends android.support.design.widget.BottomSheetDialog {

        public BottomSheetDialog(@NonNull Context context) {
            super(context);
        }

        protected BottomSheetDialog(@NonNull Context context, final boolean cancelable,
                                    OnCancelListener cancelListener) {
            super(context, cancelable, cancelListener);
        }

        public BottomSheetDialog(@NonNull Context context, @StyleRes final int theme) {
            super(context, theme);
        }

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().setLayout(300 /*our width*/, ViewGroup.LayoutParams.MATCH_PARENT);
        }
    }
}

P.S. I tried to set a dialog width in the onStart() method but it doesn't work and I don't know why.

like image 79
Шах Avatar answered Oct 04 '22 06:10

Шах