Android 如何获取视图';使用边距定位视图时的s X坐标?

Android 如何获取视图';使用边距定位视图时的s X坐标?,android,android-layout,android-view,android-xml,Android,Android Layout,Android View,Android Xml,我通过活动的主XML文件插入了一个ImageView。它与左上角对齐,但左上角的边距设置为16dp。 我在屏幕上拖动此视图,并在释放时将其设置为初始位置 如果不进行硬编码,如何找到初始X值?将dp像素转换为简单像素后,正确值为42像素。如果我调用方法myImageView.getX()它将返回0.0尝试通过 Rect targetRect = new Rect(); myImageView.getLocalVisibleRect(targetRect); int x =

我通过活动的主XML文件插入了一个
ImageView
。它与左上角对齐,但左上角的边距设置为
16dp
。 我在屏幕上拖动此视图,并在释放时将其设置为初始位置


如果不进行硬编码,如何找到初始X值?将dp像素转换为简单像素后,正确值为42像素。如果我调用方法
myImageView.getX()
它将返回
0.0

尝试通过

    Rect targetRect = new Rect();
    myImageView.getLocalVisibleRect(targetRect);

    int x = myImageView.getTop());
    int y = myImageView.getLeft(); 

您可以使用
getLeft()
getTop()
获取视图相对于其父视图的位置

从google开发者文档:

可以通过调用 方法getLeft()和getTop()。前者返回左侧,或X, 表示视图的矩形的坐标。后者回来了 表示视图的矩形的顶部或Y坐标。 这些方法都返回视图相对于其位置的位置 父母亲例如,当getLeft()返回20时,表示视图 位于其直接图像左边缘右侧20个像素处 家长

这意味着您可以使用以下代码段获得x:

int x = imageView.getLeft();

我可以通过从
MarginLayoutParams
读取边距值,但是有没有办法读取X?
getLeft()
也返回零,与
getX()
相同,但是这个方法在
onWindowFocusChanged()
中使用时有效,我不明白为什么,但它也返回零值。我还尝试了其他Rect检索方法(全局、绘图…),您想从哪里获取坐标?也许布局还没有计算出尺寸。尝试WindowFocusChanged回调最初我在创建时尝试了它,但现在也尝试了在WindowFocusChanged()-它仍然返回零,但在使用
getLeft()
时返回正确值,在使用
getGlobalVisibleRect()时返回正确值。谢谢你的指点。我不知道该给谁分配正确的答案,因为两者都部分正确。