2016-06-13 6 views
2

私のFragmentLayoutには、複数のサブビュー(TextView,CardView)を持つLinearLayoutがあります。私はすべてのLinearLayoutビューのトップオフセットを見つけたいですが、私はいつもゼロになります。
これは私のコードです:なぜgetLocationOnScreen(location)は常に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

関連する問題