How to use BottomSheetDialog?

前端 未结 5 457
暖寄归人
暖寄归人 2021-02-03 19:41

I want to try BottomSheetDialog introduced in Android Support Library 23.2 but it doesn\'t seem to work correctly. Here is what the doc says:

5条回答
  •  爱一瞬间的悲伤
    2021-02-03 20:27

    I was expriencing the same issue, dimmed background and content not visible. Here is how I managed to workaround it by setting the content view in setupDialog() hidden method.

    public class CustomBottomSheetDialogFragment extends BottomSheetDialogFragment {
    
        private TextView mOffsetText;
        private TextView mStateText;
        private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() {
    
            @Override
            public void onStateChanged(@NonNull View bottomSheet, int newState) {
                setStateText(newState);
                if (newState == BottomSheetBehavior.STATE_HIDDEN) {
                    dismiss();
                }
    
            }
    
            @Override
            public void onSlide(@NonNull View bottomSheet, float slideOffset) {
                setOffsetText(slideOffset);
            }
        };
        private LinearLayoutManager mLinearLayoutManager;
        private ApplicationAdapter mAdapter;
    
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            return super.onCreateDialog(savedInstanceState);
        }
    
        @Override
        public void onViewCreated(View contentView, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(contentView, savedInstanceState);
        }
    
        @Override
        public void setupDialog(Dialog dialog, int style) {
            super.setupDialog(dialog, style);
            View contentView = View.inflate(getContext(), R.layout.bottom_sheet_dialog_content_view, null);
            dialog.setContentView(contentView);
           mBottomSheetBehavior = BottomSheetBehavior.from(((View) contentView.getParent()));
            if (mBottomSheetBehavior != null) {
                mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetBehaviorCallback);   
            }
            mOffsetText = (TextView) contentView.findViewById(R.id.offsetText);
            mStateText = (TextView) contentView.findViewById(R.id.stateText);
        }
    
    }
    

    And the layout:

    
    
    
    
        
    
        
    
        
    
    

提交回复
热议问题