Android 导航:将上一个片段保留在对话框后面。仅适用于 BottomSheetDialogFragment
Android Navigation: Keep previous fragment behind dialog. Works only with BottomSheetDialogFragment
我有一个视频应用程序 - 一个视频列表,点击一个项目会转到视频详细信息。我希望视频细节成为一个全屏对话框片段(以便能够从这里 https://medium.com/vrt-digital-studio/picture-in-picture-video-overlay-with-motionlayout-a9404663b9e7 进行运动布局动画)。但是前面的对话框并没有保留在后面(显示一个空白屏幕)。很奇怪 BottomSheetDialogFragment 有效,但 DialogFragment 没有。
所以问题是 - 在使用 Jetpack 导航时,对话框片段是否应该在其下方显示上一个片段?为什么底部 sheet 有效而对话框无效?
使用 android 喷气背包导航完成导航:
<action
android:id="@+id/action_videosFragment_to_video_details_nav_graph"
app:destination="@id/video_details_nav_graph"/>
和详细导航图:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/video_details_nav_graph"
app:startDestination="@id/videoDetailsFragment">
<dialog
android:id="@+id/videoDetailsFragment"
android:name="com.myapp.mobile.ui.video.VideoDetailsFragment"
android:label="VideoDetailsFragment"
tools:layout="@layout/fragment_video_details">
</dialog>
</navigation>
我错过了什么吗?谢谢
在深入研究之后,设法使其适用于:
override fun onStart() {
super.onStart()
val dialog: Dialog? = dialog
if (dialog != null) {
val width = ViewGroup.LayoutParams.MATCH_PARENT
val height = ViewGroup.LayoutParams.MATCH_PARENT
dialog.window?.setLayout(width, height)
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
}
}
我有一个视频应用程序 - 一个视频列表,点击一个项目会转到视频详细信息。我希望视频细节成为一个全屏对话框片段(以便能够从这里 https://medium.com/vrt-digital-studio/picture-in-picture-video-overlay-with-motionlayout-a9404663b9e7 进行运动布局动画)。但是前面的对话框并没有保留在后面(显示一个空白屏幕)。很奇怪 BottomSheetDialogFragment 有效,但 DialogFragment 没有。
所以问题是 - 在使用 Jetpack 导航时,对话框片段是否应该在其下方显示上一个片段?为什么底部 sheet 有效而对话框无效?
使用 android 喷气背包导航完成导航:
<action
android:id="@+id/action_videosFragment_to_video_details_nav_graph"
app:destination="@id/video_details_nav_graph"/>
和详细导航图:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/video_details_nav_graph"
app:startDestination="@id/videoDetailsFragment">
<dialog
android:id="@+id/videoDetailsFragment"
android:name="com.myapp.mobile.ui.video.VideoDetailsFragment"
android:label="VideoDetailsFragment"
tools:layout="@layout/fragment_video_details">
</dialog>
</navigation>
我错过了什么吗?谢谢
在深入研究之后,设法使其适用于:
override fun onStart() {
super.onStart()
val dialog: Dialog? = dialog
if (dialog != null) {
val width = ViewGroup.LayoutParams.MATCH_PARENT
val height = ViewGroup.LayoutParams.MATCH_PARENT
dialog.window?.setLayout(width, height)
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
dialog.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
}
}