gpt4 book ai didi

android - 为什么在 "setLayoutParams"之后使用 "getLayoutParams"?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:59:26 28 4
gpt4 key购买 nike

例如,如果你想将某些 View 的 LayoutParams 更改为 WRAP_CONTENT,同时 widthheight以编程方式,它看起来像这样:

 final ViewGroup.LayoutParams lp = yourView.getLayoutParams();
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;

据我了解,getLayoutParams 返回参数的引用,因此这段代码就足够了。但我经常在示例等中看到,在这行之后,这一行如下:

 yourView.setLayoutParams(lp);  

我想知道这一行的意义何在?

这仅仅是为了更好的代码可读性还是在某些情况下没有它就无法工作?

最佳答案

使用它是因为 setLayoutParams() 还会触发 resolveLayoutParams()requestLayout(),这将通知 View 某些内容已更改并刷新它。

否则我们无法确保新的布局参数确实更新。


查看View.setLayoutParams源代码:

public void setLayoutParams(ViewGroup.LayoutParams params) {
if (params == null) {
throw new NullPointerException("Layout parameters cannot be null");
}
mLayoutParams = params;
resolveLayoutParams();
if (mParent instanceof ViewGroup) {
((ViewGroup) mParent).onSetLayoutParams(this, params);
}
requestLayout();
}

关于android - 为什么在 "setLayoutParams"之后使用 "getLayoutParams"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500090/

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