sig*_*ger 11 android android-layout
我CoordinatorLayout正在使用ViewCompat.offsetLeftAndRight和ViewCompact.offsetTopAndBottomAPI 一起使用其中的子视图位置进行动画处理.
当添加或删除子视图时CoordinatorLayout,布局操作将每个子视图的位置重置到屏幕的左上角,即没有任何偏移.
该文章提供了一个解决方案,通过在子视图设置布局听众和恢复老位置.
我注意到使用setTranslationX和setTranslationYAPI,这个问题不会发生.儿童在父母布局事件后保持其位置.
我应如何在这两套API之间做出决定,以便在屏幕上安排我的观点?我很谨慎地使用它们而不理解它们的差异.通过阅读官方文档,我没有得到很好的理解.
几个月后很老的问题我几乎没有解释:
先说第一件事。偏移将水平或垂直移动视图类似于平移,但它用于永久结果。
当您在View#offsetTopAndBottom(int offset)内部使用then 时,它具有以下功能:
mTop += offset;
mBottom += offset;
Run Code Online (Sandbox Code Playgroud)
另一方面, tranlate 是一个变量,除了这个顶部/底部/左侧/右侧位置之外还计算并且在动画中非常方便。
如果需要,这两种方法都会触发布局刷新。
Nick Butcher 在这个不错的视频中解释了更多:https : //www.youtube.com/watch?v= 86p1GPEv_fY&t =5m42s
关于CoordinatorLayout您对孩子的任何更改设置边距吗?例如BottomSheetBehavior,不能很好地处理边距,因为它忽略了它们。我想这可能是你的情况。