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

时间:2015-11-13 20:59:20

标签: java android android-layout

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新手。

3 个答案:

答案 0 :(得分:25)

从文档中,setTranslationX是:

  

设置此视图相对于其左侧位置的水平位置。除了对象的布局放置它之外,这有效地定位了布局后的对象。

setX是:

  

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

因此,您可以将setTranlsationX视为相对偏移:移动通常位置的3个像素。 setX是一个固定的位置:移动你所拥有的任何东西,以便你最终在坐标X处绘制。

答案 1 :(得分:9)

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

enter image description here

答案 2 :(得分:4)

设置XY可以设置视图相对于父视图左上角的位置(而不是屏幕上的绝对位置)。设置平移会将视图相对于父视图放置的位置移动。 (家长将视图放置在(left, top)上。)

enter image description here