0

在我的BottomSheetDialogFragment我使用这个选项(fitsSystemWindows = false)来修复奇怪的效果,同时滚动到底部示例 gifMapView在导航栏的顶部)

 override fun onActivityCreated(savedInstanceState: Bundle?) {
    super.onActivityCreated(savedInstanceState)
    (requireView().parent.parent.parent as View).fitsSystemWindows = false
  }

但它会导致另一个问题,当任何view's大小更改或EditText接收焦点时,对话框高度会跳到状态栏顶部,并且导航栏也是透明的 示例 2 gif

有没有人有同样的问题或知道如何解决这个奇怪的跳跃

4

1 回答 1

0

这就是在我的一个项目中对我有用的方法。它将使您所有的底部工作表对话框片段具有相同的形状。它的内容将滚动而不移动该形状。

请注意,如果您AppTheme从不同的主题继承,您的里程可能会有所不同。如果这对您的项目没有任何作用,请告诉我,我还有另一个项目,它的完成方式可能略有不同。

 <!--    https://material.io/develop/android/theming/dark/ -->
 <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar">

        <item name="bottomSheetDialogTheme">@style/AppTheme.RoundedBottomSheet</item>


 </style>

<style name="AppTheme.RoundedBottomSheet" parent="Theme.Design.Light.BottomSheetDialog">
    <item name="bottomSheetStyle">@style/AppModalStyle</item>
</style>
于 2020-07-26T02:19:01.177 回答