[英]How to open full screen bottom dialog in Adapter kotlin
我如何在全屏模式下打开底部对话框。但每当我点击它时,它只会打开半屏视图,而不是滚动到全屏。但还有一件事是适配器 class
var flashAlertPopUp = FareDetailBottomSheet(data.fare_details)
flashAlertPopUp.show(childFragmentManager, "")
在您的孩子BottomSheetDialogFragment
中覆盖setupDialog()
以将其设置为随着屏幕尺寸的高度展开,如下所示:
override fun setupDialog(dialog: Dialog, style: Int) {
super.setupDialog(dialog, style)
val parentView = rootView.parent as View
val params = parentView.layoutParams as CoordinatorLayout.LayoutParams
val behavior = params.behavior
if (behavior != null && behavior is BottomSheetBehavior<*>) {
behavior.state = BottomSheetBehavior.STATE_EXPANDED
behavior.peekHeight = requireContext().screenSize.y
}
}
val Context.screenSize: Point
get() = Point().also {
(getSystemService(Context.WINDOW_SERVICE) as? WindowManager)?.defaultDisplay?.getSize(it)
}
在 Java 代码中:
public class FareDetailBottomSheet extends BottomSheetDialogFragment {
private View rootView;
@SuppressLint("RestrictedApi")
@Override
public void setupDialog(@NonNull Dialog dialog, int style) {
super.setupDialog(dialog, style);
// layoutResId: your layout resource id
rootView = View.inflate(requireContext(), layoutResId, null);
dialog.setContentView(rootView);
onInitViews();
View parentView = (View) rootView.getParent();
CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) parentView.getLayoutParams();
CoordinatorLayout.Behavior behavior = params.getBehavior();
if (behavior instanceof BottomSheetBehavior) {
((BottomSheetBehavior) behavior).setState(BottomSheetBehavior.STATE_EXPANDED);
((BottomSheetBehavior) behavior).setPeekHeight(getScreenSize().y);
}
}
private void onInitViews() {
// do your initialization here...
// for example:
// TextView textView = rootView.findViewById(R.id.textView);
}
private Point getScreenSize() {
Point point = new Point();
WindowManager wm = (WindowManager) requireContext().getSystemService(Context.WINDOW_SERVICE);
if (wm.getDefaultDisplay() != null) {
wm.getDefaultDisplay().getSize(point);
}
return point;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.