- 主要是获取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);
}
}