如何在LinearLayout中获取视图的坐标

Tal*_*lha 1 layout android android-linearlayout

我有一个LinearLayout可以有很多孩子观点.以编程方式添加子视图.

                                                      i need this distance
                                                    <---------------------->
--------------------------------wrapper ln----------------------------------
-                                             ...  cv4   cv3    cv2    cv1 -  
----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

Wrapper ln gravity设置为右侧,因此每个添加的子视图都正确.

例如,当我点击"cv4"时,我需要从包装线性布局的右侧获得距离.

子视图属于LinearLayout类型.

Cod*_*gue 5

您可以调用getWidth()父LinearLayout并getLeft()在动态添加的视图上从右侧获取位置:

parent.getWidth() - c4.getLeft();

您也可以挂钩,OnGlobalLayoutListener这样您每次更改尺寸时都可以获得坐标:

parent.getViewTreeObserver().addOnGlobalLayoutListener(
     new ViewTreeObserver.OnGlobalLayoutListener() {
          public void onGlobalLayout() {
               int right = parent.getWidth() - c4.getLeft();
          }
     }
Run Code Online (Sandbox Code Playgroud)