例如,如果您希望将某些视图的LayoutParams
更改为WRAP_CONTENT
width
和height
programmaticaly,则会看起来像这样:
final ViewGroup.LayoutParams lp = yourView.getLayoutParams();
lp.height = ViewGroup.LayoutParams.WRAP_CONTENT;
lp.width = ViewGroup.LayoutParams.WRAP_CONTENT;
当我感到不安时getLayoutParams
会返回params的引用,所以这段代码就足够了,但我经常在示例中看到,依此类推后,接下来就是:
yourView.setLayoutParams(lp);
我想知道这条线的重点是什么。这只是为了更好的代码可读性,还是有些情况下没有它就无法工作?
答案 0 :(得分:5)
New-WebBinding
还会触发cd iis:\Sites\MySite
和setLayoutParams()
,这会通知视图已更改内容,刷新它。或者我们无法确保新的布局参数能够正常工作。
请参阅resolveLayoutParams()
来源代码:
requestLayout()
答案 1 :(得分:0)
无法确保您对getLayoutParams()
返回的LayoutParams所做的任何更改都会得到正确反映。它可以通过Android版本改变。因此,您必须致电setLayoutParams()
以确保视图将更新这些更改。
答案 2 :(得分:0)
如果您不使用setLayoutParams(),则在调用View.onLayout()时,您的布局设置会生效。
的源代码 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();
}
如您所见,requestLayout将在setLayoutParams中调用。此视图将立即重新布局。 onLayout也会被调用。