2017-03-24 18 views
0

Iそのフラグメントは、スクロールすることになっている位置を示し整数を取得インスタンス化されると垂直ScrollViewアンドロイド:UIが完全にロードされた後のアクションを実行する方法

とフラグメントをcointains活性を有します

にこれはonCreateView方法で

を必要なときに使用する引数に入れて、この断片は、それが表示する必要がありますどのように多くの子断片計算し、そのコンテンツビューに追加するトランザクションを使用して、フラグメントのレイアウトがありますこのように:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ScrollView 
     android:id="@+id/list.scroll" 
     android:paddingStart="@dimen/question_side_margin" 
     android:paddingEnd="@dimen/question_side_margin" 
     android:layout_marginTop="@dimen/margin_medium" 
     android:layout_marginBottom="@dimen/margin_medium" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="11"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical" 
      android:id="@+id/list.content" /> 
    </ScrollView> 

</LinearLayout> 

これは正しく

働く私scrollviewが

int y_coord; 
for (int idx = 0; idx < position; idx++) { 
    y_coord += _children[idx].getHeight(); 
} 

問題に行くべき場所を算出し、このコードは、私はそれらのどれもの間、フラグメントANのほとんどのメソッドをテストしているということである子供をしてい実際の高さを持っているfrigment、私はこれまで、以下の方法を確認しています

  1. OnResume
  2. OnStart
  3. OnCreate
  4. OnActivityCreated
  5. OnAttach
  6. OnCreateView

ビューは完全にレンダリングされたときに発動するフラグメントのトランザクション中に、いくつかの方法がありますか?

あなたは

編集提供することができます任意の助けを事前に感謝:サイドノートとして、私は通常の断片を使用していたものをサポートしていないが、私はOnCreateAnimation

+0

ビューが作成された後、onViewCreated()が実行されます。 – buzzingsilently

+0

ちょうど意見:あなたの要素の高さは、スクロールビューの可視領域に表示されている間に計算されるかもしれません。 –

+0

「MessageQueue.IdleHandler'を参照してください。 – pskink

答えて

0

へのアクセスを持っていないあなたは、上書きしようとすることができonViewCreatedメソッドを使用するか、グローバルレイアウトリスナを使用できます。グローバルレイアウトリスナーは、基本的には、それをアタッチしたレイアウトが何らかの形で変更されたときにコールバックを提供します。私はそれが完全に膨張し、そのサイズが計算された後、私がビューにフックする必要があるときにそれを使用します。

rootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

    @Override 
    public void onGlobalLayout() { 
     //Check here 
     rootView.getViewTreeObserver().remove....(this); 
    } 
}); 

リスナーを削除するための正確な構文は覚えていませんが、完了したら削除することは非常に重要です。それ以外の場合は、多くのコールバックを取得します。

関連する問題