我想要实现的是类似于Instagram应用内网络浏览器的功能,该功能可在您点击广告时使用:
What I'm trying to achieve is something like Instagram in-app web browser, used when you click an ad:
我做了什么,是我使用了WebView bottomSheetDialogFragment,还是重写了 onCreateDialog 来获得全屏显示,如下所示:
what I did, is I used a WebView bottomSheetDialogFragment, and I override onCreateDialog to get the full screen like this :
@Override public Dialog onCreateDialog(Bundle savedInstanceState) { BottomSheetDialog bottomSheetDialog=(BottomSheetDialog)super.onCreateDialog(savedInstanceState); bottomSheetDialog.setOnShowListener(dialog -> { BottomSheetDialog dialogc = (BottomSheetDialog) dialog; FrameLayout bottomSheet = dialogc .findViewById(android.support.design.R.id.design_bottom_sheet); BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED); //BottomSheetBehavior.from(bottomSheet).setSkipCollapsed(true); //BottomSheetBehavior.from(bottomSheet).setHideable(true); }); return bottomSheetDialog; }这是我得到的结果:
我的问题是,如何获得全屏效果,或者如何实现instagram浏览器之类的功能?
my question is, how can I get the full screen effect, or how can achieve something like instagram browser?
ps:我尝试了第一个chrome自定义标签,但无法将其添加到对话框片段中.
ps: I tried first chrome custom tabs, but I couldn't add it inside dialog fragment.
谢谢.
推荐答案在您的自定义 BottomSheetDialogFragment ,您可以使用类似的东西:
In your custom BottomSheetDialogFragment you can use something like:
@NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Dialog dialog = super.onCreateDialog(savedInstanceState); dialog.setOnShowListener(new DialogInterface.OnShowListener() { @Override public void onShow(DialogInterface dialogInterface) { BottomSheetDialog bottomSheetDialog = (BottomSheetDialog) dialogInterface; setupFullHeight(bottomSheetDialog); } }); return dialog; } private void setupFullHeight(BottomSheetDialog bottomSheetDialog) { FrameLayout bottomSheet = (FrameLayout) bottomSheetDialog.findViewById(R.id.design_bottom_sheet); BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); ViewGroup.LayoutParams layoutParams = bottomSheet.getLayoutParams(); int windowHeight = getWindowHeight(); if (layoutParams != null) { layoutParams.height = windowHeight; } bottomSheet.setLayoutParams(layoutParams); behavior.setState(BottomSheetBehavior.STATE_EXPANDED); } private int getWindowHeight() { // Calculate window height for fullscreen use DisplayMetrics displayMetrics = new DisplayMetrics(); ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); return displayMetrics.heightPixels; }更多推荐
bottomSheetDialogFragment全屏
发布评论