如何获取android中元素相对于父元素的位置/偏移量?

Posted

技术标签:

【中文标题】如何获取android中元素相对于父元素的位置/偏移量?【英文标题】:How to get position/off-set of an element in android with respect to parent element? 【发布时间】:2014-12-26 14:36:56 【问题描述】:

在我的项目中,我的布局如下:

<FrameLayout>   ---------(1)
  <SurfaceView>
     <FrameLayout> ------(2)
  </SurfaceView>
</FrameLayout>

我想访问框架布局(2)相对于框架布局(1)的位置/偏移量。

当我尝试 FrameLayout1.getLeft() 和 FrameLayout1.getTop() 时,我得到它为零。

获取嵌套元素(left,top) 的正确方法是什么?

谢谢!

更新--->

int dpi = getResources().getDisplayMetrics().densityDpi;

int offset1 = childFrameLayoutPosition[0] - rootFrameLayoutPosition[0]; //x offset
int offset2 = childFrameLayoutPosition[1] - rootFrameLayoutPosition[1]; //y offset

      //F1 is child FrameLayout
        newBitmap = Bitmap.createBitmap(bitmap,offset1*w, offset2*w,F1.getWidth()*w,F1.getHeight()*w);

执行此操作后,我得到了 Width 和 Height 参数应该小于位图的宽度和高度的错误。

【问题讨论】:

【参考方案1】:
int[] rootFrameLayoutPosition = new int[2];
int[] childFrameLayoutPosition = new int[2];
rootFrameLayout.getLocationInWindow(rootFrameLayoutPosition);
childFrameLayout.getLocationInWindow(childFrameLayoutPosition);
int offset = childFrameLayoutPosition[1] - rootFrameLayoutPosition[1];

也许我对 x 和 y 感到困惑

【讨论】:

数组 int[] 中的 index0 给出 x,index1 给出 y。这个解决方案对我有用,谢谢! 我还有一个问题,当我使用这些坐标通过方法进行图像裁剪时:Bitmap.createBitmap(src,int,int,int,int) 裁剪后的图像不是帧布局中指示的部分。我错过了一些 dp 到像素的转换吗? 感谢您的反馈) 位图它的背景或ImageView的src? 对于 ImageView。暂时我只是将裁剪后的图像存储在 SD 卡中。

以上是关于如何获取android中元素相对于父元素的位置/偏移量?的主要内容,如果未能解决你的问题,请参考以下文章

我如何知道像素相对于相机的位置(以厘米或毫米为单位)?

Matlab中,A={1,2;3,4;5,6;7,8},B={5,6;7,8},如何删除A中与B中元素相同行,得到C={1,2;4,5}?

使用 extjs 获取相对位置

JS如何判断元素相对于父窗口的绝对位置?

js中父元素如何获得元素的子元素么

python去掉列表中元组元素上面引号?