我想做以下事情:

rootLayout.getLayoutParams().height = 100;


目前,我的“ loadData”方法中包含此行。问题是-“ layoutParams”似乎为空,直到调用了“ loadData”之后的某个时间(但是在明显显示之前)。

有什么地方可以放置此行的位置,该行将实例化layoutParams,但仍在第一次显示视图之前?

最佳答案

    rootLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    rootLayout.getViewTreeObserver()
                            .removeOnGlobalLayoutListener(this);
                } else {
                    rootLayout.getViewTreeObserver()
                            .removeGlobalOnLayoutListener(this);
                }
                rootLayout.getLayoutParams().height = 100;
                rootLayout.requestLayout();
            }
        });

07-26 07:45