BottomSheetView 中的 animateLayoutChanges="true" 显示意外行为

2024-02-02

我有一个BottomSheetView其中有animateLayoutChanges="true"。最初它显示得很好。但如果改变visibility一个视图(内部BottomSheetView) from GONE to VISIBLE,该应用程序搞乱了计算,我的BottomSheetView移动到屏幕顶部。我尝试过设置layout_gravity=bottom的根部BottomSheetView布局。但没有成功。

这是我的图像BottomSheetView在更改任何视图的可见性之前。 (点击图片查看大图)

当我更改视图的可见性后(GONE to VISIBLE or VISIBLE to GONE),我的 BottomSheetView 移动到顶部。 (点击图片查看大图)

我猜,Android 在计算视图测量时搞砸了width and height。有什么办法解决这个问题吗??

我还尝试使 BottomSheetView 完全扩展以匹配父视图,但不知何故,这使得height of the BottomSheetView比手机屏幕长,并且会造成滚动问题。

预期解决方案:

1> 预防BottomSheetView即使在改变其位置时visibility视图的改变。

OR

2>使BottomSheetView匹配父级,这样在计算混乱后看起来不会很糟糕。


BottomSheetBehavior 不能很好地工作LayoutTransition (animateLayoutChanges="true") 目前。我将致力于修复。

现在,您可以使用Transition反而。像这样的东西会使内部视图淡化并使底部工作表的大小产生动画效果。

ViewGroup bottomSheet = ...;
View hidingView = ...;

TransitionManager.beginDelayedTransition(bottomSheet);
hidingView.setVisibility(View.GONE);

您可以参考应用过渡 https://developer.android.com/training/transitions/transitions.html了解更多信息,包括如何自定义动画。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BottomSheetView 中的 animateLayoutChanges="true" 显示意外行为 的相关文章

随机推荐