问题描述
我想要实现的是类似于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全屏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!