2016-12-12 11 views
0

私がトップ。これは、最初に0を返し、それがレイアウトされた後、それが正しいmarginTop()セットに基づいて座標を取得します以下ビューがレイアウトされているかどうかをどのように確認できますか?

view.getTop(); 

を使用してビュー座標を取得しています。

私の質問から見ると、ビューが適切なレイアウトになっているかどうかを知るにはどうすればよいですか(たとえば、getTopは適切な値を返します)。

私の使用シナリオは以下の通りです。私はonScrollの間にビューの座標を取得しようとしていますが、これはビューが初期化される最初の時間と呼ばれるため、getTop()は0を返します。これは初めて正しい値ではありません。私はそのシナリオを検討するのを避けたいですが、onScrollリスナーが適切な値を持っている場合にのみ開始します。

myList.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      int top = view.getTop(); 
     } 
    }); 

答えて

2
ViewTreeObserver viewTreeObserver = view.getViewTreeObserver(); 
viewTreeObserver.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     int top = view.getTop(); 
    } 
} 
+0

はい、それを使用しました。 onGlobalLayout初期化に挿入する必要がある処理の機能のほとんどのように見えます。ありがとう! – Elye

関連する問題