BottomSheetDialogFragment 如何设置高度和禁止滑动

xiaoxiao2021-02-28  29

主要是获取dialog 的BottomSheetBehavior 然后设置 setPeekHeight 和 BottomSheetCallback.

code

public class BottomSheetFragment extends BottomSheetDialogFragment { private Button button; private View contentView; // private BottomSheetBehavior<View> mBottomSheetBehavior; private BottomSheetBehavior.BottomSheetCallback mBottomSheetBehaviorCallback = new BottomSheetBehavior.BottomSheetCallback() { @Override public void onStateChanged(@NonNull View bottomSheet, int newState) { //禁止拖拽, if (newState == BottomSheetBehavior.STATE_DRAGGING) { //设置为收缩状态 mBottomSheetBehavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } } @Override public void onSlide(@NonNull View bottomSheet, float slideOffset) { } }; @Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { View bottomSheet = dialog.findViewById(R.id.design_bottom_sheet); bottomSheet.getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT; } final View view = getView(); view.post(new Runnable() { @Override public void run() { View parent = (View) view.getParent(); CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) (parent).getLayoutParams(); CoordinatorLayout.Behavior behavior = params.getBehavior(); mBottomSheetBehavior = (BottomSheetBehavior) behavior; mBottomSheetBehavior.setBottomSheetCallback(mBottomSheetBehaviorCallback); Display display = getActivity().getWindowManager().getDefaultDisplay(); //设置高度 int height = display.getHeight() / 2; mBottomSheetBehavior.setPeekHeight(height); parent.setBackgroundColor(Color.TRANSPARENT); } }); } private void findView() { button = contentView.findViewById(R.id.button); } @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { contentView = inflater.inflate(R.layout.bottom_sheet_dialog_content_view, container, false); findView(); return contentView; } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); button.setText(TAG); } }
转载请注明原文地址: https://www.6miu.com/read-2629379.html

最新回复(0)