2012-11-29 51 views
0

有時我需要在活動剛剛顯示時進行一些操作(例如更改佈局)。我現在要做的是使用post()活動顯示時將調用哪個生命週期方法?

public class MyActivity extends Activity { 

    @Override 
    public void onCreate() { 
     ... 
     container.post(new Runnable(){ 
       resize(container); 
     }); 
    } 
} 

有沒有像onCreate任何生命週期方法可以用來簡化代碼,我並不需要調用post

@Override 
public void onX() { 
    resize(container); 
} 
+0

你的意思是在手術後完全顯示的UI? – Simon

+2

Android的羅曼蓋伊在[在所有視圖完全繪製後觸發了什麼事件?](http://stackoverflow.com/q/3947145/1267661)中描述了類似這樣的方法。所以不行。處理程序是你最好的選擇。 – Sam

+0

您可以閱讀http://stackoverflow.com/questions/6812003/difference-between-oncreate-and-onstart – logcat

回答

2

我認爲你的意思是在UI顯示後做些事情。

使用全局佈局偵聽器對我來說一直效果不錯。它具有能夠在佈局改變時重新測量事物的優點,例如,如果某項設置爲View.GONE或子視圖被添加/刪除。

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    // inflate your main layout here (use RelativeLayout or whatever your root ViewGroup type is 
    LinearLayout mainLayout = (LinearLayout) this.getLayoutInflater().inflate(R.layout.main, null); 

    // set a global layout listener which will be called when the layout pass is completed and the view is drawn 
    mainLayout.getViewTreeObserver().addOnGlobalLayoutListener(
    new ViewTreeObserver.OnGlobalLayoutListener() { 
      public void onGlobalLayout() { 
       // at this point, the UI is fully displayed 
      } 
    } 
); 

setContentView(mainLayout); 

http://developer.android.com/reference/android/view/ViewTreeObserver.OnGlobalLayoutListener.html

相關問題