Android 如何获取视图';使用边距定位视图时的s X坐标?
我通过活动的主XML文件插入了一个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 =
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()时返回正确值。谢谢你的指点。我不知道该给谁分配正确的答案,因为两者都部分正确。