来自谷歌的文档
getX()方法:
此视图的视觉 x 位置,以像素为单位。这相当于translationX 属性加上当前的left 属性。
setTranslationX()方法:
设置此视图相对于其左侧位置的水平位置。除了对象的布局放置它的任何位置之外,这有效地定位了布局后的对象。
getLeft()方法:
此视图相对于其父视图的左侧位置。
因此,getX() 返回视图相对于其父视图的水平位置。
更新:
因为event.getX()
你得到的结果也是相对于父母的。您可以通过在水平居中的 RelativeLayout 中放置一个按钮来进行简单的测试,并在单击按钮时检查值
在您的布局 xml 中:
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_centerHorizontal="true">
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
</RelativeLayout>
在您的活动中:
mBtn = ((Button) findViewById( R.id.button1 ));
mBtn.setOnTouchListener( new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("", "getX = " + event.getX());
return false;
}
});
如果单击其左边距的按钮,您将获得接近 0.0 的值。