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);
}
4

1 に答える 1

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

于 2012-11-29T06:12:13.523 に答える