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