Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android setTranslationX/Y和offsetLeftAndRight/offsetTopAndBottom之间的差异?_Android_Android Layout - Fatal编程技术网

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
无法很好地处理边距,因为它忽略了边距。我想你可能就是这样