Android myView.getLayoutParams().height=screenHeight和myView.setLayoutParams(lp)之间的区别?

Android myView.getLayoutParams().height=screenHeight和myView.setLayoutParams(lp)之间的区别?,android,dynamic,height,android-relativelayout,layoutparams,Android,Dynamic,Height,Android Relativelayout,Layoutparams,在动态更改布局高度时,我通常使用LayoutParams设置所需的尺寸,如: RelativeLayout myView = (RelativeLayout) v.findViewById(R.id.myView); RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT,

在动态更改布局高度时,我通常使用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;
在我的案例中,这两种方法都有效,我当然更喜欢第二种方法,因为它简单得多,但是我需要注意的是,这两种方法之间有什么区别吗

谢谢

你可以看一眼视野

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

resolveLayoutParams();
if (mParent instanceof ViewGroup) {
    ((ViewGroup) mParent).onSetLayoutParams(this, params);
}
requestLayout();
因此,基本上会立即调用
requestLayout()
。同时,家长也会被告知这些变化

使用myView.getLayoutParams()时,高度=屏幕高度视图也必须重新显示。这可能由视图本身在其他点完成,或者必须手动完成

这取决于调用myView.getLayoutParams()的时间。高度=屏幕高度


如果
getLayoutParams()。高度=屏幕高度,这应该可以工作。

hmmm,很有趣。这似乎是以编程方式更改维度时的一个重要问题。也许这就是为什么当我们使用setLayoutParams时xml参数被覆盖的原因(这发生在我身上)。