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

标签 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,
                        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/

相关文章:

安卓应用 : Storing lots of images on a server

css - 使 div 高度适合内容高度 IE<=7

jquery - 能否使用Jquery自动查找并设置多种图片的宽高?

android - 如何在 Android 上使用 Volley 添加两个请求之间的延迟

java - View 动画队列

android - 将控制台和 logcat View 移至底部

javascript - 获取动态定义的、选中的单选按钮的属性

android - 当用户在另一个 Activity 中编辑了某些字段时更新先前 Activity 中的数据,onRestart?

C++动态分配数组

internet-explorer - 最小高度 CSS 中的最小高度