2016-06-13 318 views
2

在我的FragmentLayout我有一个LinearLayout与多个子视图(TextViewCardView)。我想查找所有LinearLayout的最大偏移量,但我总是得到零。
这是我的代码:为什么getLocationOnScreen(位置)总是返回0?

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    view = inflater.inflate(R.layout.fragment_detail, container, false); 

    nestedScrollView = (NestedScrollView) view.findViewById(R.id.nestedScrollView); 
    linearLayout = (LinearLayout) view.findViewById(R.id.lll); 

    int childCount = linearLayout.getChildCount(); 
    int[] location = new int[2]; 
    for (int i = 0; i < childCount; i++) { 
     View v = linearLayout.getChildAt(i); 
     v.getLocationOnScreen(location); 

     Log.e("locX", location[0] + ""); 
     Log.e("locY", location[1] + ""); 

    } 


    return view; 
} 

这是我的布局XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.design.widget.CoordinatorLayout> 
     <android.support.design.widget.AppBarLayout> 
      <android.support.design.widget.CollapsingToolbarLayout>    
      </android.support.design.widget.CollapsingToolbarLayout> 
     </android.support.design.widget.AppBarLayout> 

     <android.support.v4.widget.NestedScrollView 
      android:id="@+id/nestedScrollView" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

      <LinearLayout android:id="@+id/lll"> 

      // views are there 

      </LinearLayout> 


     </android.support.v4.widget.NestedScrollView> 
    </android.support.design.widget.CoordinatorLayout> 
</LinearLayout> 

回答

1

编写函数在onWindowFocusChanged(boolean hasFocus)方法来寻找位置或发布与100毫秒的延迟处理任务。

+0

非常感谢你 –

+0

我很大的活动或片段。我如何做 – suulisin

+0

尝试,在新的Handler().post(...... v.getLocationOnScreen(location); .....); – Neo