差异:myView.getLayoutParams()。height = screenHeight和myView.setLayoutParams(lp)?

时间:2015-08-02 08:55:29

标签: android dynamic height relativelayout layoutparams

当涉及动态更改布局的高度时,我通常使用LayoutParams设置所需的尺寸,如:

RelativeLayout myView = (RelativeLayout) v.findViewById(R.id.myView);     
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.FILL_PARENT,
                        screenHeight);

    myView.setLayoutParams(lp);

但也有这个较短的版本:

myView.getLayoutParams().height = screenHeight;

两个都在我的情况下工作,我更喜欢第二个版本当然因为更简单,但我需要注意的是两个有什么区别吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以查看视图的source code

调用setLayoutParams时,也会执行以下语句。

resolveLayoutParams();
if (mParent instanceof ViewGroup) {
    ((ViewGroup) mParent).onSetLayoutParams(this, params);
}
requestLayout();

所以基本上立即调用requestLayout()。父母也会被告知这些变化。

使用myView.getLayoutParams().height = screenHeight;时,视图也必须被转发。这可以通过View本身在另一点完成,或者必须手动完成。

这取决于你调用myView.getLayoutParams()的时间.height = screenHeight;

如果在第一次放置/测量视图之前调用了getLayoutParams().height = screenHeight;,这应该可行。