BottomSheetDialogFragment + GoogleMapで表示が崩れる問題を解決する方法
6322 ワード
はじめに
今回はBottomSheetDialogFragmentの中にGoogleMapを実装した際に発生した問題の解決方法を紹介します。
発生した問題
下記の動画のように、BottomSheetDialogFragmentをバックキーで閉じる際に、GoogleMapの表示が崩れるという問題が発生しました。
実装概要
実装していたコードの概要は下記の通りです。
GoogleMapにはgooglemaps/android-maps-compose を使用していました。
BottomSheetFragment.kt
...
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = FragmentBottomSheetBinding.inflate(inflater, container, false).apply {
map.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
Column(
modifier = Modifier.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
GoogleMap(
modifier = Modifier
.fillMaxWidth()
.height(260.dp),
)
}
}
}
}
return binding.root
}
...
fragment_bottom_sheet.xml
...
<androidx.compose.ui.platform.ComposeView
android:id="@+id/map"
android:layout_width="0dp"
android:layout_height="260dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/title"
/>
...
解決した方法
バックキーをで閉じる際に呼ばれる、dismiss()
をoverride
し、BottomSheetBehavior
のプロパティを変更してあげます。
BottomSheetDialogFragment.kt
...
override fun dismiss() {
val parentView = binding?.root?.parent as? View ?: return
BottomSheetBehavior.from(parentView).apply {
isHideable = true
state = BottomSheetBehavior.STATE_HIDDEN
}
}
...
おわりに
参考になると幸いです!
Author And Source
この問題について(BottomSheetDialogFragment + GoogleMapで表示が崩れる問題を解決する方法), 我々は、より多くの情報をここで見つけました https://qiita.com/YusukeSuzuki1213/items/575a0e8c12bccf34c4b1著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .