当涉及动态更改布局的高度时,我通常使用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;
两个都在我的情况下工作,我更喜欢第二个版本当然因为更简单,但我需要注意的是两个有什么区别吗?
谢谢!
答案 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;
,这应该可行。