gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 01:29:55 24 4
gpt4 key购买 nike

当涉及动态更改布局的高度时,我通常使用 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;

两者都适用于我的情况,我当然更喜欢第二个版本,因为它更简单,但是我需要注意两者之间有什么区别吗?

谢谢!

最佳答案

你可以看看source code View 。

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

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

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

当使用 myView.getLayoutParams().height = screenHeight; 时,View 也必须重新布局。这可能由 View 本身在其他时间点完成,或者必须手动完成。

这个要看你调用myView.getLayoutParams()的时候.height = screenHeight;

如果在第一次布局/测量 View 之前调用 getLayoutParams().height = screenHeight;,这应该有效。

关于android - : myView. getLayoutParams().height = screenHeight 和 myView.setLayoutParams(lp) 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com