setX(),setY()和setTranslationX(),setTranslationY()之间有什么区别?他们是在现有坐标上设置偏移还是设置绝对位置?
如果他们设置的绝对坐标不会与父布局的约束冲突吗?
说我们有类似的东西
| View 1 | View 2 | View 3|
在LinearLayout中,如果我们view2.setX(0);
或view2.setTranslationX(0);
会查看2重叠视图1或将视图1推到一边怎么办?
同样如果我们有一个RelativeLayout的子节点,其alignParentBottom设置为true,但我们在代码中手动将该子节点的y坐标设置为0。哪种布局规则获胜?
基本上,我对手动坐标如何影响容器的布局规则以及转换和X / Y之间的区别感到困惑。如果这看起来微不足道,我会事先道歉,但我是来自iOS的Android新手。
答案 0 :(得分:25)
从文档中,setTranslationX
是:
设置此视图相对于其左侧位置的水平位置。除了对象的布局放置它之外,这有效地定位了布局后的对象。
setX
是:
设置此视图的可视x位置(以像素为单位)。这相当于将translationX属性设置为传入的x值与当前left属性之间的差值。
因此,您可以将setTranlsationX
视为相对偏移:移动通常位置的3个像素。 setX
是一个固定的位置:移动你所拥有的任何东西,以便你最终在坐标X处绘制。
答案 1 :(得分:9)
setX/Y
从0,0屏幕设置绝对位置。
setTranlsationX/Y
从布局中的默认位置设置位置。
答案 2 :(得分:4)
设置X
和Y
可以设置视图相对于父视图左上角的位置(而不是屏幕上的绝对位置)。设置平移会将视图相对于父视图放置的位置移动。 (家长将视图放置在(left, top)
上。)