9

アクティビティのグラフィック インターフェイスを作成した後、いくつかのタスクを実行したいと思います。一部のビューの正確な高さと幅を知り、幅と高さに基づいてそれらのビューのいくつかの layoutParams を変更する必要があります。このonResumeメソッドでは、ビューのすべてのパラメータが 0 のままです...

今のところ、しばらくしてから実行される遅延タスクを使用していますonCreateが、これはまったく良い解決策ではありません...

アクティビティの作成で最後に呼び出されるメソッドは何ですか? ビューの幅と高さはそのような方法で利用できますか?

4

4 に答える 4

13

これを onCreate() 内で呼び出します

       final View rootView = getWindow().getDecorView().getRootView();
        rootView.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {

                        //by now all views will be displayed with correct values

                    }
                });
于 2015-11-29T03:39:38.410 に答える
4

onResume() が最後ですが、おそらく onViewCreated() の方が優れています。その利点は、フォーカスを取り戻すたびに呼び出されないことです。ただし、必要なレイアウト要素の post() 内でビューのプロパティを取得してみてください。例えば:

        textView.post(new Runnable() {
            @Override
            public void run() {
                 // do something with textView
            }
        });
于 2013-11-04T10:11:38.013 に答える
1

アクティビティの開始時に実行される最後のメソッドはonResume(). アクティビティのライフサイクルで見つけることができます。

それが十分でない場合は、これから遅延タスクを実行するonResume()と問題ありません。

于 2013-11-04T10:14:08.853 に答える