0

Je travaille avec AsyncTask et dans l'un des fils de fond que j'ai créés, je dois connaître la taille d'un View donné. Mais parfois cette vue n'a pas encore été créée. Donc la question est: à quelle partie du cycle de vie de l'activité je peux être sûr que tous les points de vue sont déjà en place et avec les dimensions définies? PS: Mon code est dans un Fragment et j'ai déjà essayé la méthode onResume().Comment être sûr que toutes les vues ont été créées

Répondre

0

personnalisée la vue que vous souhaitez obtenir la taille:

public class SizeFetchableView extends YourView{ 

//constructors... 

private SizeFetchListener mSizeFetchListener; 
public void setSizeFetchListener(SizeFetchListener l){ 
     mSizeFetchListener = l; 
} 
public void onLayout(boolean isChanged,int l,int t,int r,int b){ 
     super.onLayout(l,t,r,b); 
     if(mSizeFetchListener!=null){ 
     mSizeFetchListener.onFetchSize(this,isChanged,getWith(),getHeight()); 
     } 
} 

public interface SizeFetchListener{ 
public void onFetchSize(View view,boolean isChanged,int w,int h); 
} 

} 

, vous pouvez utiliser SizeFetchListener pour obtenir la taille de la vue dans la première fois, mais votre logique de fil qui dépendent de la taille, doit attendre la récupérer l'interface de taille invoke.

public class Task extends Thread implements SizeFetchListener{ 
SizeFetchableView mSizeFetchableView; 
    public Task(SizeFetchableView v){ 
      mSizeFetchableView=v; 
      mSizeFetchableView.setSizeFetchListner(this); 
    } 

    public void onFetchSize(View view,boolean isChanged,int w,int h){ 
    //and this time ,you can start you thread if not,or continue you logic who waiting the size 

    } 
} 

// s'il vous plaît pardonnez mes mauvaises english.Thanks

Questions connexes