Android设置视图位置 - setY vs setTop

时间:2016-09-30 16:45:44

标签: java android android-layout android-studio

我打算以编程方式移动按钮的位置。按钮处于相对布局中。我进行了研究,发现我们可以使用.setY().setTop()。它看起来应该是一样的。

但就我而言,.setTop()根本不会更改位置,而.setY()仅适用。我不确定我做了什么误会,但对我来说这很奇怪。

是否有人可以正确解释setY() vs setTop()? 有什么区别?

这是layout.xml

<RelativeLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
       android:layout_width="match_parent"
       android:layout_height="40dp"
       android:layout_marginLeft="10dp"
       android:layout_marginRight="10dp"/>
</RelativeLayout>

2 个答案:

答案 0 :(得分:2)

setY()setTop()之间的主要区别在于setY()设置视图相对于可视区域的顶部偏移量,而setTop()设置视图相对于其父的顶部偏移量。

来自Android documentation

<强> SETY()

  

设置此视图的视觉y位置(以像素为单位)。这相当于将translationY属性设置为传入的y值与当前top属性之间的差异。

<强>机顶()

  

设置此视图相对于其父级的顶部位置。

答案 1 :(得分:0)

您会注意到,setTop()并不像setY()那样有效。原因是mTop正在更改字段layout()。看到更改后的mTop的最简单方法是设置最高边距。