Android setTranslationX/Y和offsetLeftAndRight/offsetTopAndBottom之间的差异?
我正在使用一个Android setTranslationX/Y和offsetLeftAndRight/offsetTopAndBottom之间的差异?,android,android-layout,Android,Android Layout,我正在使用一个协调布局,其中子视图位置正在使用ViewCompat.offsetLeftAndRight和viewcomact.offsetopandbottomAPI设置动画 在坐标布局中添加或删除子视图时,布局操作会将每个子视图的位置重置到屏幕的左上角,即没有任何偏移 通过在子视图上设置布局侦听器并恢复旧位置,这提供了一个解决方案 我注意到,使用setTranslationX和setTranslationYapi,这个问题不会发生。在父布局事件之后,子布局保持其位置 我应该如何在这两套API
协调布局
,其中子视图位置正在使用ViewCompat.offsetLeftAndRight
和viewcomact.offsetopandbottom
API设置动画
在坐标布局中添加或删除子视图时,布局操作会将每个子视图的位置重置到屏幕的左上角,即没有任何偏移
通过在子视图上设置布局侦听器并恢复旧位置,这提供了一个解决方案
我注意到,使用setTranslationX
和setTranslationY
api,这个问题不会发生。在父布局事件之后,子布局保持其位置
我应该如何在这两套API之间做出决定,以便在屏幕上安排我的视图?我担心在不了解它们的差异的情况下使用它们。通过阅读官方文件,我没有很好地理解。几个月后,我有了一些解释:
第一件事。偏移将水平或垂直移动视图,类似于平移,但用于永久结果
当您使用查看#offsetTopAndBottom(int offset)
时,它在内部具有以下功能:
mTop += offset;
mBottom += offset;
另一方面,tranlate是一个变量,它是在上/下/左/右位置之外计算的,在动画中非常方便
如果需要,这两种方法都将触发布局刷新
Nick Butcher在这段精彩的视频中解释了更多内容:
关于协调人布局
您是否通过更改设置孩子的边距?例如,BottomSheetBehavior
无法很好地处理边距,因为它忽略了边距。我想你可能就是这样