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(). 您可以在Activity 生命周期中找到它。

如果这对您来说还不够好,请从这里运行延迟任务onResume(),您会没事的。

于 2013-11-04T10:14:08.853 回答
0

在 onResume() 方法的最后一行获取你想要的所有数据。它应该向您展示您所需要的一切。

于 2013-11-04T10:20:30.427 回答