setX(), setTranslationX(), setY() 和 setTranslationY()

2022-09-01 21:58:15

setX(),setY()和setTranslationX(),setTranslationY()之间有什么区别?它们是在现有坐标上设置偏移还是设置绝对位置?

如果它们设置绝对坐标,这不会与父布局的约束发生冲突吗?

假设我们有类似的东西| View 1 | View 2 | View 3|

在线性布局中,如果我们这样做或将视图 2 重叠视图 1 或将视图 1 推到一边,该怎么办?view2.setX(0);view2.setTranslationX(0);

同样,如果我们有一个相对布局的子项,该子项已将 alignParentBottom 设置为 true,但我们在代码中手动将该子项的 y 坐标设置为 0,该怎么办?哪个布局规则获胜?

从本质上讲,我对手动坐标如何影响容器的布局规则以及平移和X / Y之间的区别感到困惑。如果这看起来微不足道,我提前道歉,但我是来自iOS的Android新手。


答案 1

从文档中,setTranslationX是:

设置此视图相对于其左侧位置的水平位置。这可以有效地将对象放置在布局后,以及对象布局放置它的任何位置。

setX 是:

设置此视图的可视 x 位置(以像素为单位)。这等效于将 translationX 属性设置为传入的 x 值与当前左属性之间的差值。

因此,您可以将其视为相对偏移量:将3个像素移动到您通常所在的位置。并且是一个固定的位置:移动任何你必须的东西,这样你最终在坐标X处绘制。setTranlsationXsetX


答案 2

setX/Y从0,0屏幕设置绝对位置。 从布局中的默认视图位置设置位置。setTranlsationX/Y

enter image description here


推荐