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

时间:2014-12-26 14:36:57

标签: android android-layout position android-ui

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

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

我希望相对于frame-layout (2)访问frame-layout (1)的位置/偏移量。

当我尝试FrameLayout1.getLeft()和FrameLayout1.getTop()时,我将其视为零。

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

谢谢!

更新---&GT;

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 个答案:

答案 0 :(得分:0)

int[] rootFrameLayoutPosition = new int[2];
int[] childFrameLayoutPosition = new int[2];
rootFrameLayout.getLocationInWindow(rootFrameLayoutPosition);
childFrameLayout.getLocationInWindow(childFrameLayoutPosition);
int offset = childFrameLayoutPosition[1] - rootFrameLayoutPosition[1];

也许我对x和y感到困惑